- PR -

クラス名とデータ変数を区別する記法はありますか

投稿者投稿内容
まりり
ぬし
会議室デビュー日: 2001/12/05
投稿数: 329
投稿日時: 2003-09-10 11:12
なんというか、日本語ソースをもろ手を上げて賛成できないのは
下手に読めちゃうだけに意味がねじれることが容易に想像できる
からですね。
みなさん、仕様書の記述でもめたことありません?
画面設計するときなんかに同義語の取り扱いに困ったことありません?
同じ言葉なのにコンテキストによって意味や条件が変わって困ったことありません?
これ、知らない言葉であれば注意して検討するんでしょうけど、
知ってしまっている言葉だと見落としがちな気がするんですよね。

結局のところ、適切なルール付けがなければなんとなくソースは読めても
保守性は悪いままだと思うのですよ。

その点、従来のASCIIで書かれたソースというのは英語であるが故の
ある種制限めいたことが自然な形で入っていたと思うわけです。
まあ、これにしたって書いた人のレベルと読む人のレベルがずれたら
読みにくさは増えますが。

引用:

あと、外来語をどうするか、という問題があります。
http://www.kokken.go.jp/public/gairaigo/Teian2_tyuukan/iikaego.html
を見ると、たとえば「login(ログイン)」は「接続開始」とする案がありますが、


これ、ネタでしょって思う言葉多くて気が滅入ります。
らすかる
会議室デビュー日: 2003/08/18
投稿数: 5
投稿日時: 2003-09-10 11:44
引用:

まりりさんの書き込み (2003-09-10 11:12) より:
(前略)
その点、従来のASCIIで書かれたソースというのは英語であるが故の
ある種制限めいたことが自然な形で入っていたと思うわけです。



自国語は読みやすいからルールが決められないのですか?
知らない言葉のほうがルールが決めやすいのですか?
仮にそうなら、逆に英語圏の人はその問題をどう解決すればいいんですか。

ニュアンスのわかりやすい自国語より、よく知らない他国語を使ったほうが
あいまいさを除去しやすい、という理屈は理解できません。
「知ってしまってる言葉だと見落としがち」なのであれば
それは怠慢か、見落としても問題がない単語かのどちらかです。

引用:

結局のところ、適切なルール付けがなければなんとなくソースは読めても
保守性は悪いままだと思うのですよ。



当然です。日本語にしたからといってルールがなくていいなんてことはありません。
むしろ、英語では一般的なルール(クラス名は大文字で始まるなど)が
ある程度確立されているが、日本語ではそれがないことがもったいないなぁと
思うんです。
もう少し日本語でソースを書くことが一般的な地位を確立して、
一般的なルールもできればいいなぁ…というのは
今のところ私の願望でしかないんですけどね。

引用:

引用:

あと、外来語をどうするか、という問題があります。
http://www.kokken.go.jp/public/gairaigo/Teian2_tyuukan/iikaego.html
を見ると、たとえば「login(ログイン)」は「接続開始」とする案がありますが、


これ、ネタでしょって思う言葉多くて気が滅入ります。



同感です。loginは「ログイン」でいい。
Shane
大ベテラン
会議室デビュー日: 2003/06/06
投稿数: 132
お住まい・勤務地: Vancouver, BC
投稿日時: 2003-09-10 11:53
クラス名や変数名は日本語にできても、
その他ステートメントなどは英語ですよね?
IME切り替えるのめんどくさくないですか?
コメントすら英語で書いていいなら書きたいところです。
ぽん
大ベテラン
会議室デビュー日: 2003/05/13
投稿数: 157
投稿日時: 2003-09-10 12:08
引用:

らすかるさんの書き込み (2003-09-10 11:44) より:

同感です。loginは「ログイン」でいい。


日本語ルールでコーディングした場合、「login関数」の名前は
1.ログイン
2.接続開始
3.login
のどれですかね?
ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2003-09-10 12:10
ども、ほむらです。
スレッドタイトルとはずれつつありますけど記法という点で
まだ許容範囲かなとも思っています^^;;;;;
---------------
らすかる氏へ
引用:

現実問題、どう考えても日本語環境以外で使用することがありえない
開発プロジェクトであれば、
わざわざ日本語以外の環境のことを考えたってしょうがないです。
環境の問題、ソースコードの読みやすさを天秤にかけて、
日本語を使うことを選択するケースは、もっと多くてもいいはずでは、
というのが私の主張です。
頭ごなしに「環境の問題」「気持ち悪い」と
日本語が敬遠されるのはもったいないと思うんですよ


そうですね。頭ごなしに否定してしまうのはいけないと思うのも確かなのですが
やっぱり個人的には
コード:

if( (ユーザー情報.基本情報.getUserName_Sei()).equals("佐藤") == true ){
System.io.println( ユーザー情報.基本.getUserFullName() );
}
とするくらいなら
// 佐藤という名字の人のフルネームを表示
if( (UserInfo.BaseInfo.getUserName_Sei()).equals("佐藤") == true ){
System.io.println( UserInfo.Base.getUserFullName() );
}
としたほうが読みやすいし、コード記述も楽ですね
無理に英語は使わずにローマ字にしてしまうのもコツです。(笑


>「ユーザ名パスワード登録処理」を「usrNmPsWdRgPrc」とか。
を特に問題なくごく普通に読めてしまうからからそう思うのかな?
きっと「UserNamePasswordResiteredProcedure」の略ですよね
日本語同様にこちらも慣れですね。

英語の略称に慣れると一般的なサンプルコードを違和感なく
トレースできるメリットもあったりします

引用:

># だれがみてもわかり易くするためにプログラムにはコメントが必要なのです。
よかったら、マーチン・ファウラーの「リファクタリング」読んでみてください。
この常識が覆されます^^;


リファクタリングを考慮したところで、コメントの重要性がなくなるとは思えませんが
お勧めの書籍らしいしリファクタリングについてちゃんと勉強したこともないので
ぜひ、読ませていただきます。
読んだ結果コメントについて思うことがあれば別スレになるかと思いますが^^;;;;;

#僕って宗教論争をばら撒き易いのでこの手の話題は危険ですが(笑


[ メッセージ編集済み 編集者: ほむら 編集日時 2003-09-10 12:16 ]
まりり
ぬし
会議室デビュー日: 2001/12/05
投稿数: 329
投稿日時: 2003-09-10 13:07
引用:

らすかるさんの書き込み (2003-09-10 11:44) より:
引用:

まりりさんの書き込み (2003-09-10 11:12) より:
(前略)
その点、従来のASCIIで書かれたソースというのは英語であるが故の
ある種制限めいたことが自然な形で入っていたと思うわけです。



自国語は読みやすいからルールが決められないのですか?
知らない言葉のほうがルールが決めやすいのですか?
仮にそうなら、逆に英語圏の人はその問題をどう解決すればいいんですか。

ニュアンスのわかりやすい自国語より、よく知らない他国語を使ったほうが
あいまいさを除去しやすい、という理屈は理解できません。
「知ってしまってる言葉だと見落としがち」なのであれば
それは怠慢か、見落としても問題がない単語かのどちらかです。


曖昧さが除去しやすいとまでは言いません。
見落としが怠慢や些細なことであるという点もそのとおりだと思います。

自国語のほうがルールが要らないという錯覚を起こしやすいのですよ。
なので、従来の方法はもともとの制限がその手の怠慢を許さない仕組みに
なっていたと思うわけです。
自由に書けるようになったとき(それらの制限がはずれたとき)、自然に
入っていたルールが見落とされがちなのが嫌なのです、という主張です。

見落とさないようにするためには、ルールを作る(怠慢さを排除する)
別の枠組みを導入する必要があり、これらが日本語を積極的に使うことによる
メリットに比べて負荷の低いものだとは思えないです。

ただ、それにしたってケースバイケースであるでしょうから、
日本語を使うようにすることで心配しているデメリットを超える
効果があがることもあるんだろうなとは思いますよ。


もうひとつ。
ルール付けなどがきっちりされていて、メリットが享受できるところで
日本語を利用することは反対しませんが、そこまでの成長を見守る気は
あまりないです。

引用:

引用:

結局のところ、適切なルール付けがなければなんとなくソースは読めても
保守性は悪いままだと思うのですよ。



当然です。日本語にしたからといってルールがなくていいなんてことはありません。
むしろ、英語では一般的なルール(クラス名は大文字で始まるなど)が
ある程度確立されているが、日本語ではそれがないことがもったいないなぁと
思うんです。
もう少し日本語でソースを書くことが一般的な地位を確立して、
一般的なルールもできればいいなぁ…というのは
今のところ私の願望でしかないんですけどね。


ぱっとは思いつかないですが、微妙な概念の差(クラスとインスタンスの差のような)が
端的に説明できるような言葉なら受け入れやすいルールになるかもしれないですね。
お犬様
ベテラン
会議室デビュー日: 2003/01/26
投稿数: 67
投稿日時: 2003-09-10 13:25
引用:
Junさんの書き込み (2003-09-09 09:32) より:

まあこれに関して簡単に言うとjavaでは(他のたいていの言語も)左から右に向かってしか解釈してくれないということでしょうか

仮に "a.A" を 限定ExpressionName として解釈するようなコンパイラがあったとしてもJava言語規定の「文脈に従った名前の構文上の分類」の項によれば
引用:
次の文脈では,名前を構文上,AmbiguousName として分類する。

 ・ 限定ExpressionName 内の"."の左側。

とありますから、やはり "a" は AmbigousName と解釈され、同名のフィールドの方が優先されます。


引用:
らすかるさんの書き込み (2003-09-10 09:27) より:

「ユーザ名パスワード登録処理」を「usrNmPsWdRgPrc」とか。こんなふざけた命名規約があまりにも一般的にまかり通ってます。

それは命名規約が拙いのであって日本語/英語はそれほど関係無いように思えます。


引用:
unibonさんの書き込み (2003-09-10 10:04) より:

プログラムのソースコード中にある文字列が、クラス名なのか変数名なのか、や、変数がインスタンス変数なのかローカル変数なのかは、少なくとも Java ならばそれが登場しているコンテキストで一意に決定できます。したがって、プログラマがいちいち、○○クラス、とか、○○インスタンス変数、などのように名前を修飾する必要はないと思います(型についても同様に)。

Java言語規定の「文脈に従った名前の構文上の分類」の項によれば
引用:
次の文脈では,名前を構文上,PackageOrTypeNameとして分類する。

 ・ 限定TypeName内の"."の左。
 ・ 要求時の型インポート宣言(7.5.2)内。

次の文脈では,名前を構文上,AmbiguousName として分類する。

 ・ 限定ExpressionName 内の"."の左側。
 ・ 限定MethodName内の"."の左側。
 ・ 限定AmbiguousName 内の"."の左側。

とありますから、必ずしも一意に解釈できるわけではありません。


引用:
ほむらさんの書き込み (2003-09-10 12:10) より:

// 佐藤という名字の人のフルネームを表示
if( (UserInfo.BaseInfo.getUserName_Sei()).equals("佐藤") == true ){
 System.io.println( UserInfo.Base.getUserFullName() );
}

UserInfo.BaseInfo にユーザ以外の名前が含まれて居ないなら getUserName_Sei() や getUserFullName() の User は必要ないように思われます。また、getUserFullName() は全体が英語表記なのに getUserName_Sei() は前半が英語表記で途中からローマ字表記になっているのは拙いように思います。

[ メッセージ編集済み 編集者: お犬様 編集日時 2003-09-10 13:37 ]
ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2003-09-10 14:42
ども、ほむらです。
------------
引用:

UserInfo.BaseInfo にユーザ以外の名前が含まれて居ないなら getUserName_Sei() や getUserFullName() の User は必要ないように思われます。また、getUserFullName() は全体が英語表記なのに getUserName_Sei() は前半が英語表記で途中からローマ字表記になっているのは拙いように思います。


たしかに、UserInfoということでユーザーのことであるということは
修飾できていますので必要なかったかもしれませんね。

getUserName_Sei()についてはまぁ例題ということでご容赦ください。
といっても個人的には辞書引かなければわからない単語はローマ字というのがあるので
同じ書き方は多数出現するときもありますあとは、Userという修飾が必要だったとして
getUserFamilyName()と書くよりは直感的でわかり易かったりしませんか?
一応区切りで'_'を混ぜたりと多少の工夫はしているつもりなのですが。。。。

スキルアップ/キャリアアップ(JOB@IT)