主にプログラミングに関して。Python, .NET Framework(C#), JavaScript, その他いくらか。
記事にあるサンプルやコードは要検証。使用に際しては責任を負いかねます

スポンサーサイト

                
tags:
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

IronPython: 命名規則

                
 以前にIronPythonで書いたWPFアプリケーションを、C#に書き直そうとしたときに困ることがあった。関数などの命名の問題だ。IronPythonスクリプト内やXAMLでの関数などの命名を、Pythonの命名規則にのっとって行っていた。Pythonの命名規則は少し特殊だ。

 Pythonの命名規則ではアンダーバー(_)が使われることが多い。関数や変数は大文字を使わずに、単語をアンダーバーでつなげるようになっている(参考:http://google-styleguide.googlecode.com/svn/trunk/pyguide.html#Naming)。
some_function()
some_variable

 C#では? C#での命名規則は、公式にある.NETの命名規則を参考にする。
SomeMethod()
someProperty

 違う言語なのだから違う命名規則で置いておけばいいかとも思うが、そうもいかない。IronPythonでインポートする.NETのクラスたちは、.NETの規則で書かれている。つまり標準のPythonモジュールと.NETで用意されているクラスの両方を使うと、一貫した命名規則を保てないことになる。

 IronPythonでWPFアプリを作ったときに、実行パフォーマンスが悪かったので、IronPythonスクリプトをC#コードに書き換えることでパフォーマンスの向上を図った。このときIronPythonの関数はPythonの命名規則に従って書いていた。この関数たちが、XAMLファイル内のイベント関数などを介して、C#コードにPythonの命名規則を持ち込むような形になってしまった。C#コードにPythonの命名規則を持ち込んで、二重規則にするのはまずいと思い、IronPythonスクリプト内ではすべて.NET標準に沿う形に直した。これでC#コードは標準の命名規則を貫けた。
XAML under Python naming convention
<Button click="some_function()">click</Button>

XAML under .NET naming convention
<Button click="SomeFunction()">click</Button>

 IronPythonで.NETのクラスとPythonモジュールのクラスの両方を使おうという場合、.NETとPythonの命名規則が混在することになる。このときPythonの命名規則でスクリプトを書くと、同じプロジェクト内でC#コードを書くときに、そっちにまで命名規則の混在を引き起こしかねない。それを防ぎたければ、IronPythonでは.NETの命名規則に従ってコーディングしたほうがよさそうだということ。


























Python C#
class ClassName ClassName
method method_name() MethodName
property property_name PropertyName
local variable local_variable localVariable
            

コメントの投稿

非公開コメント

プロフィール

hMatoba

Author:hMatoba
Github

最新記事
リンク
作ったものなど
月別アーカイブ
カテゴリ
タグリスト

検索フォーム
Amazon
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。