|
From: Masaaki A. <mas...@gm...> - 2011-08-28 07:07:06
Attachments:
enum.txt
|
青柳です。 今後実装するものについて、以下のようなenumやflagsの規則を提案します。 * 定義はG_DEF_CLASSで行う(G_DEF_CONSTANTSは使わない) * 所属する名前空間は、キャメルケースで分離してパスが最長一致する名前空間とする (ここでのパスとは、Vte::TerminalならVteTerminalとする) 例)VteTerminalCursorBlinkModeの場合 * キャメルケースで分離 Vte, Terminal, Cursor, Blink, Mode * VteTerminalCursorBlink, VteTerminalCursor, VteTerminal と順番にパスが一致する名前空間を探す Vte::Terminalが一致するので、Vte::Terminalに属す * クラス名は所属する名前空間のパスを削除したものとする 例)VteTerminalCursorBlinkMode → CursorBlinkMode いかがでしょうか? 参考として、いくつかのライブラリで定義されているenumとflagsのリストを添付します。 また、命名規則に合っていないファイルがありましたので、ファイル名を変更しようと思います。 よろしいでしょうか? rbvte-access.c → rbvte-terminalaccessible.c |
|
From: Kouhei S. <ko...@co...> - 2011-08-28 07:23:18
|
須藤です。 In <CAM...@ma...> "[ruby-gnome2-devel-ja] enumやflagsの規則について" on Sun, 28 Aug 2011 16:06:59 +0900, Masaaki Aoyagi <mas...@gm...> wrote: > 今後実装するものについて、以下のようなenumやflagsの規則を提案します。 > > * 定義はG_DEF_CLASSで行う(G_DEF_CONSTANTSは使わない) > * 所属する名前空間は、キャメルケースで分離してパスが最長一致する名前空間とする > (ここでのパスとは、Vte::TerminalならVteTerminalとする) > 例)VteTerminalCursorBlinkModeの場合 > * キャメルケースで分離 > Vte, Terminal, Cursor, Blink, Mode > * VteTerminalCursorBlink, VteTerminalCursor, VteTerminal と順番にパスが一致する名前空間を探す > Vte::Terminalが一致するので、Vte::Terminalに属す > * クラス名は所属する名前空間のパスを削除したものとする > 例)VteTerminalCursorBlinkMode → CursorBlinkMode > > いかがでしょうか? > 参考として、いくつかのライブラリで定義されているenumとflagsのリストを添付します。 ありがとうございます! よいと思います! > また、命名規則に合っていないファイルがありましたので、ファイル名を変更しようと思います。 > よろしいでしょうか? > rbvte-access.c → rbvte-terminalaccessible.c はい、こちらもOKです! |
|
From: Masaaki A. <mas...@gm...> - 2011-09-11 09:34:45
Attachments:
deprecated_const.diff.gz
deprecated_method.diff.gz
|
青柳です。 既存のenumやflagsについて、命名規則に即した定義が欲しいと思います。 そこで、添付のパッチのように命名規則に即したものをCで実装するようにし、 既存の名前はrubyレベルで実装するというのは、いかがでしょうか? また、match_set_cursor〜 についてIFをまとめた方が良いと思います。 添付のパッチのようにまとめて、既にリリース済みのmatch_set_cursor_typeについては deprecatedとしてwarningを出すようにするのは、いかがでしょうか? とりあえず、こんな感じで実装してみましたが、もっといいやり方がありそうな気も。。。 |
|
From: Kouhei S. <ko...@co...> - 2011-09-11 09:52:50
|
須藤です。
In <CAM...@ma...>
"Re: [ruby-gnome2-devel-ja] enumやflagsの規則について" on Sun, 11 Sep 2011 18:34:38 +0900,
Masaaki Aoyagi <mas...@gm...> wrote:
> 既存のenumやflagsについて、命名規則に即した定義が欲しいと思います。
> そこで、添付のパッチのように命名規則に即したものをCで実装するようにし、
> 既存の名前はrubyレベルで実装するというのは、いかがでしょうか?
いいと思います。
細かいですが、少し気になった点を。。。
* require 'vte/deprecated.rb'ではなく、
require 'vte/deprecated'にしてもらえますか?
そっちの方がよく使われる書き方なので。
* GNOMEUtilsというよりは、GLib::XXXの中に入れたほうがいい
かなぁと思いました。
(後で移動しようと考えているかとは思いますが、一応、気に
なったので書いてみました。)
* define_XXXは外に出してよいと思いますが、constant_getは外
に出したくないかなぁと思いました。
* 定数のときもwarningを出したほうが便利かも。
const_missingを使って、最初にアクセスされたときにwarning
出しながらconst_setするとそんな動作になりそう。
> また、match_set_cursor〜 についてIFをまとめた方が良いと思います。
> 添付のパッチのようにまとめて、既にリリース済みのmatch_set_cursor_typeについては
> deprecatedとしてwarningを出すようにするのは、いかがでしょうか?
その通りだと思います。
warnのメッセージの中にcallerの結果も入れた方が便利かなぁと思
いました。メッセージがでてもどこで出ているかわからないと直す
のに時間がかかってしまうので。
> とりあえず、こんな感じで実装してみましたが、もっといいやり方がありそうな気も。。。
方向はよいと思うので、コミットしてリポジトリ上でブラッシュアッ
プしていくというのでもいいかなぁと思います。
|
|
From: Masaaki A. <mas...@gm...> - 2011-09-12 10:56:34
|
青柳です。
>> warnのメッセージの中にcallerの結果も入れた方が便利かなぁと思
>> いました。メッセージがでてもどこで出ているかわからないと直す
>> のに時間がかかってしまうので。
>
> warningが出てるのを分かりつつ使うということもあると思うので、デフォルトでcallerまで含めるのは
> 止めておいた方がいいように思います。
すみません。スタック全部出すと勘違いして返信してしまいました。
考えてみたら、使っている場所だけ分かればいいのですね。
単純に、こんな感じで出せばよいでしょうか?
Index: lib/vte/deprecated.rb
===================================================================
--- lib/vte/deprecated.rb (リビジョン 4633)
+++ lib/vte/deprecated.rb (作業コピー)
@@ -9,7 +9,7 @@
def define_deprecated_method(deprecated_method, new_method)
if public_method_defined?(new_method)
define_method(deprecated_method) do |*args, &block|
- warn "'#{deprecated_method}' has been deprecated. Use '#{new_method}'."
+ warn "#{caller[0]}: '#{deprecated_method}' has been
deprecated. Use '#{new_method}'."
__send__(new_method, *args, &block)
end
end
@@ -20,7 +20,7 @@
def const_missing(deprecated_const)
if new_const = (@@deprecated_const[self] || {})[deprecated_const.to_sym]
if new_const = constant_get(new_const)
- warn "'#{[name, deprecated_const].join('::')}' has been
deprecated. Use '#{new_const}'."
+ warn "#{caller[0]}: '#{[name, deprecated_const].join('::')}'
has been deprecated. Use '#{new_const}'."
const_set(deprecated_const, new_const)
end
end
それと、
>> * GNOMEUtilsというよりは、GLib::XXXの中に入れたほうがいい
>> かなぁと思いました。
Forwardableに倣って、GLib::Deprecatableとかどうでしょうか?
|
|
From: Kouhei S. <ko...@co...> - 2011-09-12 12:35:00
|
須藤です。 In <CAM...@ma...> "Re: [ruby-gnome2-devel-ja] enumやflagsの規則について" on Mon, 12 Sep 2011 19:56:26 +0900, Masaaki Aoyagi <mas...@gm...> wrote: >>> warnのメッセージの中にcallerの結果も入れた方が便利かなぁと思 >>> いました。メッセージがでてもどこで出ているかわからないと直す >>> のに時間がかかってしまうので。 >> >> warningが出てるのを分かりつつ使うということもあると思うので、デフォルトでcallerまで含めるのは >> 止めておいた方がいいように思います。 > > すみません。スタック全部出すと勘違いして返信してしまいました。 > 考えてみたら、使っている場所だけ分かればいいのですね。 > 単純に、こんな感じで出せばよいでしょうか? はい!いいと思います! > それと、 >>> * GNOMEUtilsというよりは、GLib::XXXの中に入れたほうがいい >>> かなぁと思いました。 > > Forwardableに倣って、GLib::Deprecatableとかどうでしょうか? GNOMEUtilsよりずっとよいと思います! そうしましょう! |
|
From: Masaaki A. <mas...@gm...> - 2011-09-11 12:48:54
|
青柳です。 > * require 'vte/deprecated.rb'ではなく、 > require 'vte/deprecated'にしてもらえますか? 修正しました。 > * GNOMEUtilsというよりは、GLib::XXXの中に入れたほうがいい > かなぁと思いました。 いい場所と名前は、ありますか? 今のところ思いつかなくて。。。 > * define_XXXは外に出してよいと思いますが、constant_getは外 > に出したくないかなぁと思いました。 privateに変更しました。 > * 定数のときもwarningを出したほうが便利かも。 > const_missingを使って、最初にアクセスされたときにwarning > 出しながらconst_setするとそんな動作になりそう。 const_missingを使って、warning出力するようにしました。 ただ、const_defined?で確認して何かやっているようなコードがあると問題が出ますが、 ないですよね。 >> また、match_set_cursor~ についてIFをまとめた方が良いと思います。 >> 添付のパッチのようにまとめて、既にリリース済みのmatch_set_cursor_typeについては >> deprecatedとしてwarningを出すようにするのは、いかがでしょうか? > > その通りだと思います。 > warnのメッセージの中にcallerの結果も入れた方が便利かなぁと思 > いました。メッセージがでてもどこで出ているかわからないと直す > のに時間がかかってしまうので。 warningが出てるのを分かりつつ使うということもあると思うので、デフォルトでcallerまで含めるのは 止めておいた方がいいように思います。 何かしらの設定で、callerも出力できるようにするというのは、いいかもしれないですが 以上の内容でコミットしましたので、ご確認ください。 |