回答(全12件)
質問者が選んだベストアンサー
回答の評価を上げる
以下のような回答は評価を上げましょう。
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
12
回答の評価を下げる
以下のような回答は評価を下げられます。
- 間違っている回答
- 質問の回答になっていない投稿
- 不快な投稿
評価を下げる際は理由をコメントしてください。
私はもちろん「英語での命名を徹底すべき」と思っているのですが、質問文を読んでいてむしろ「なるほど⋯」と思ってしまいました。
特にここ。
どれがプログラム特有の命令で、どれがプログラム記述者が自由につけた変数名なのかがわかりにくいのです。
ここに、価値観の分かれ道があるんだろうと感じました。
多分私は(私を含め、多くの英単語命名者は)、クラスを作ったり関数を作ったりするのは「プログラムを作る」ことであると同時に「言語を拡張している」と考えています。
標準でたくさん便利なクラスが用意されているわけですが、自分がクラスを作ればそれも利用可能なクラスの一つになってより便利なわけですよ。言語環境を拡張していると言えます。
(私が最初に入った言語がBASICだったからというのもあるかもしれません。この言語ではプログラマが新しい命令を関数を作ることは(ごく限定的にしか)できませんでした。その後C言語を知って、標準ライブラリと同列に扱える関数をプログラマが書けると理解したときの感動と言ったら。無限に拡張できる言語じゃないか! と。)
プログラミングには、自分のプログラムを作っているという側面と言語環境自体を拡張している側面とがあり、特に後者のことを意識するともとの言語環境と同じような使い勝手、つまり命名規則をできるだけ守りたいという意識が働きます。
それで、英単語での命名に自然となるのです。
2015/12/16 23:24 投稿
コメント(3)
2015/12/17 08:12
「みんなやってくれるといいのになぁ・・・」
ここポイントです。みんなが同じルールでプログラムを書いてくれたら読みやすいってのは、あるわけです。
そしてプログラミングにおいては海外の人と共同作業する機会が多いことを考えると、必然的に何語に統一されていくかというと…?
2015/12/22 01:42
追記ありがとうございます。
自分は完全に一人で勉強してるので共同作業とかは考えないのですが
世にあるコードはそんなことないですもんね。
上の方で回答にあったPHPの$とかそういうルールがあればいいのになぁと切に思いました
isset($replyData['Comments']["total_count"]) ? $replyData['Comments']["total_count"] ?>
回答の評価を上げる
以下のような回答は評価を上げましょう。
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
8
回答の評価を下げる
以下のような回答は評価を下げられます。
- 間違っている回答
- 質問の回答になっていない投稿
- 不快な投稿
評価を下げる際は理由をコメントしてください。
オライリーのリーダブルコードという本をオススメします。
2章の「名前に情報を詰め込む」が質問者の回答となることでしょう。
私からの回答は「役割をはっきりさせましょう」です。
チームや数カ月後の自分が分かるように書くことです。
プログラムを見なくても役割を明確にすることが大事です。
日本語か、ローマ字か、英語かは本質ではありません。
どれを選択するかは(仕事で趣味を想定して)開発チームに伝わるかで決めてみてはどうでしょうか。
もちろんオススメは英語です。
英語はニュアンスが限られ明確で正確な命名ができ、世界共通語で一般的だからです。
ですが、役割をはっきりした命名の感覚を養う事のほうが重要かと思います。
そういう意味で乱暴な言い方で日本語でもいいという事を書いています。
誰にも迷惑をかけない限りは、色々やってみるのがいいのではないでしょうか。
(英語に慣れていくのが将来の為になります。コードを読む事が増えてきますので)
例)
例えば、return_url()という関数名からはURLを返却するという事が伝わってきます。
悪例)
もしこれが、my_url()、kansu_url()、func_url()という名前だとしたら
役割が分かりにくいです。
コードの中身を見る必要があります。
という具合に命名はプログラミングの醍醐味の一つです。
ぜひ、紹介した書籍を手にとって理解を深めてみてください。
追記
でも、それをするにしても「これって俺が作ったっけ?」ってなりそうなので
やっぱり「my_」とかつけたくなっちゃいそうです・・・
gitを覚えましょう。
git blameを使えば、一目瞭然です。
2015/12/17 02:55 投稿
コメント(3)
2015/12/22 01:38
回答ありがとうございます。
完全に一人でのプログラムなのでチームで決めるとかはないのですが
「名前に情報を詰め込む」というのは非常に興味の湧いたフレーズですね。
調べてみます(その本はなんか初心者には難しそうですが・・・)
英語には確かに慣れたほうがいいですね;
isset($replyData['Comments']["total_count"]) ? $replyData['Comments']["total_count"] ?>
回答の評価を上げる
以下のような回答は評価を上げましょう。
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
2
回答の評価を下げる
以下のような回答は評価を下げられます。
- 間違っている回答
- 質問の回答になっていない投稿
- 不快な投稿
評価を下げる際は理由をコメントしてください。
どれがプログラム特有の命令で、どれがプログラム記述者が自由につけた変数名なのかがわかりにくいのです。
言語のキーワードは、そう多くないので、全部覚えるのは難しくないです。
見た目ですぐ分かるように区別したいという人は、言語のキーワードだけ色が変わるエディタ(IDEなど)を使っています。
英単語が並んでいると、
日本語を使いたいということでしょうか?名前に日本語が使える環境ならそれもいいかと思います。
ローマ字は、わかりにくいですよ。
2015/12/16 23:39 投稿
コメント(3)
2015/12/17 00:29
回答ありがとうございます。
多くない・・・でしょうか(汗
リファレンスなどを見るととても多くのものが並んでいるように思えます。
エディタはいいですね。ただ、サイト上のコードや本だと黒一色のものも多いのですよね。困ったものです・・・
ローマ字でもわかりにくとはいえ、プログラム特有の命令でないことはわかるので
そのほうが理解しやすいコードではありますね(自分の場合ですが)
2015/12/17 02:42
> リファレンスなどを見るととても多くのものが並んでいるように思えます。
ああ、「プログラム特有の命令」って、標準ライブラリの関数やメソッドのことを言ってたんですね。
言語自体の機能のことかと思っての回答です。
「プログラム特有の命令」って、初めて見る表現だったので。
2015/12/22 01:39
たぶんそうだと思います。
ライブラリやメソッドとかよくわかってないです・・・
すべてプログラムに使用する命令なのでは?
変数はxとか自分でつけるので分かるのですが。
isset($replyData['Comments']["total_count"]) ? $replyData['Comments']["total_count"] ?>
回答の評価を上げる
以下のような回答は評価を上げましょう。
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
2
回答の評価を下げる
以下のような回答は評価を下げられます。
- 間違っている回答
- 質問の回答になっていない投稿
- 不快な投稿
評価を下げる際は理由をコメントしてください。
そのコードに携わる人がわかりやすければそれでいいので、別に英語である必要は無いです。
様々な教科書などで「英語で書きなさい」と書いてあるのは最大公約数として英語で書くケースが多いという事だけかと思います。
日本においてプログラムの基礎を学習するのであれば
日本語プログラミング言語もありますし、最近の言語なら関数や変数にマルチバイト文字を使えることも多いです。
どれがプログラム特有の命令で、どれがプログラム記述者が自由につけた変数名なのかが
わかりにくいのです。
変数は変数であることがはっきりわかったほうが便利だと思うのです。
プログラムに慣れている人にはそんな必要ないのでしょうが…
言語によりけりですが、例えばPerlやPHPでは変数は$から始まるように文法で定義されていますので、同じように不便だと考える人が一定数居るんだと思います。
初心者のうちだけでも変数がわかりやすくするような
オススメの記述法などあったら教えていただけると嬉しいです。
記法としては、ハンガリアン記法(型を変数名の一部に使う)が分かりやすいと言えばわかりやすいかと思います。
あとは、VisualStudioやEclipseなどの高機能なIDEを使えば言語の関数や予約語とそれ以外はパッと見てわかるようになるので、そういった機能を使うのもいいでしょうし、学習段階においてはh_ という形でも特に問題無いと思います。
2015/12/17 04:51 投稿
コメント(1)
2015/12/22 01:34
回答ありがといございます。
>例えばPerlやPHPでは変数は$から始まる
調べてみたら、これは分かりやすい!と思いました。
一発で変数と分かる素晴らしい仕組みですね。
こういうのを求めていたのかも・・・PHPはたぶん使うことはありませんが;
ハンガリアンとかも調べてみます。
IDEは色が変わるから便利でいいんですよね。
困るのは書籍やネット上の黒一色のコードを見るときにわかりにくいのです。
isset($replyData['Comments']["total_count"]) ? $replyData['Comments']["total_count"] ?>
回答の評価を上げる
以下のような回答は評価を上げましょう。
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
2
回答の評価を下げる
以下のような回答は評価を下げられます。
- 間違っている回答
- 質問の回答になっていない投稿
- 不快な投稿
評価を下げる際は理由をコメントしてください。
こんにちは。
どれがプログラム特有の命令で、どれがプログラム記述者が自由につけた変数名なのかがわかりにくいのです。
この視点重要と思います。Akagi.S.さん、良いセンスをお持ちですね。
forやifなどのキーワードは大した数ないので覚えれば良いだけですが、ライブラリはなかなかそうもいきません。
私はC++erですが、最近はライブラリ名を丸っと省略するためのusingを使わないようにしてます。
長過ぎる時は、namespace boostLC=boost::locale::conv;
などして短縮してますが、boostライブラリであることが判るようにしてます。大量のライブラリ関数やクラスを一々覚えてられないので、ググりやすいようにする工夫です。
残念ながら、C#ではusingして使うことが多く、C++程様々なライブラリがあるわけではない上、C#のライブラリは深く細分化されているので、C#の場合は使い勝手がよくないと思います。
ですので、Akagi.S.さんが工夫されているように変数名の命名規則を自分なりに定めるのは良い工夫と思います。他の人に使って貰うことまでは難しいとは思いますが、俺ルールが許される範囲で自分が使う分には問題無いです。初心者を脱出した時はまた別の俺ルールに変えていくことも有りですし。(皆さん、結局そうしてます。上記の私のルールも最近の俺ルールです。)
もし、多くの人にとっても有用な俺ルールだったら、布教できるかも知れません。(最近、私はある人の俺ルールの1つが優れていると感じて、私の俺ルールに採用させて貰ったことがあります。)
因みにVisual Studioは変数名等に漢字使えますよ。「h_速度」とか「h_数」等の変数名も可能なはずです。実際に使っている例を見たことはないですが、日本人しか読むことがあり得ないようなソース・コードならそれも有りと思います。ただ、それに慣れてしまうとワールド・ワイドなコードを書けなくなりそうなのであまりお薦めできませんが。
そもそもソフトウェア技術と文化が最も進歩している国はアメリカと思います。英語情報の質と量は凄いです。英語を読めることはプログラミング技術者の重要スキルの1つと思いますよ。
2015/12/17 16:02 投稿
コメント(1)
2015/12/22 01:25
回答ありがとうございます。
変数と分かりやすい規則を自分でつけるのは良いと思います。
みんなもつけてくれるとなお良いと思うのですw
人によって必要なルールは違うということですね。
とてもよくわかりました。
isset($replyData['Comments']["total_count"]) ? $replyData['Comments']["total_count"] ?>
回答の評価を上げる
以下のような回答は評価を上げましょう。
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
1
回答の評価を下げる
以下のような回答は評価を下げられます。
- 間違っている回答
- 質問の回答になっていない投稿
- 不快な投稿
評価を下げる際は理由をコメントしてください。
過去の質問です。
参考にしてください。
2015/12/16 23:33 投稿
コメント(1)
2015/12/17 00:30
ありがとうございます。
一通り見てみました。
ある程度みんな同じようなものを使っていたほうが、本当はいいのでしょうね。
ただ、初心者にはほんと英語だけだとわかりにくいのです・・・
isset($replyData['Comments']["total_count"]) ? $replyData['Comments']["total_count"] ?>
回答の評価を上げる
以下のような回答は評価を上げましょう。
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
1
回答の評価を下げる
以下のような回答は評価を下げられます。
- 間違っている回答
- 質問の回答になっていない投稿
- 不快な投稿
評価を下げる際は理由をコメントしてください。
英語にする理由は特にないと思います。風習といいますか。
変数の命名規則は、会社やプロジェクトにコーディング規約があればそれに従う。なければご自分の自由に決めて構わないと思います。
規約は一般的に可読性や拡張性を考慮して決められていることが多いです。
言語毎にある程度一般的な命名規則があるので、最初はそれに従って書くと勉強になるかもしれません。
2015/12/16 23:54 投稿
コメント(1)
2015/12/17 00:27
回答ありがとうございます。
自由につけていいもののはずですが、だいたい「英語でつけなさい」と書いてあるのですよね・・・
趣味で他の人が見ないなら自由でいいのかもしれませんね。
isset($replyData['Comments']["total_count"]) ? $replyData['Comments']["total_count"] ?>
回答の評価を上げる
以下のような回答は評価を上げましょう。
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
1
回答の評価を下げる
以下のような回答は評価を下げられます。
- 間違っている回答
- 質問の回答になっていない投稿
- 不快な投稿
評価を下げる際は理由をコメントしてください。
フリーでやっているのでいろいろな職場で働いています。
あるパッケージのバージョンアップでAL32UTF8(Unicode)にしか対応しなくなり、
Oracle 10.2.0 JA16SJIS(SJIS) → Oracle11.2.0 AL32UTF8 の担当にされた時、
Unicode では半角カタカナとマルチバイト文字が1文字3バイト(1文字4バイトもあるらしい?)
になるので文字列が桁あふれする可能性が出てくるので、あらかじめテーブルやプログラムの
文字型変数の桁数を見直さなければならないが、それ以前に、マルチバイト文字を11文字以上で
設計した、テーブル名、列名などが30バイト以上になりエラーが多発。
Oracle データベース・オブジェクトのネーミング規則
地獄でした。
2015/12/17 08:27 投稿
回答の評価を上げる
以下のような回答は評価を上げましょう。
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
1
回答の評価を下げる
以下のような回答は評価を下げられます。
- 間違っている回答
- 質問の回答になっていない投稿
- 不快な投稿
評価を下げる際は理由をコメントしてください。
英語/日本語という話より、
どれがプログラム特有の命令で、どれがプログラム記述者が自由につけた変数名なのかが
わかりにくいのです。
とのことで、
「プログラム特有の命令」っていうのが標準のライブラリを指して、
人が作ったものと自分が作ったものの区別を付けたいという話のようですが、
他の人が作ったものと自分が作ったものを区別する必要を余り感じません。
むしろ「読み込み動作」に「Read~」と「Yomikomi~」と2つの表現があったら
似たような動作なんだから同じ名前つけろよと思ってしまいます。
あと、みんながみんな自分が作った変数にh_関数にk_とマーカーつけたところで、
.net標準ライブラリ自体誰かが作ったものなので(コード見れます)
結局全部にマーカー付きます。
変数は変数であることがはっきりわかったほうが便利だと思うのです。
(ローカル)変数とそれ以外を区別したいという話なら、
C#の文脈だとローカル変数、引数は小文字始まりで、
非privateな何かは大文字始まりのことが多いです。
2015/12/17 09:19 投稿
コメント(1)
2015/12/22 01:29
回答ありがとうございます。
ライブラリ、というのがまだよくわかっていなかったのかも・・・
誰かが作った便利機能、ということなのですね。
なら一般的に英語になるのも致し方ない。。。うーん
ローカル変数は小文字始まりとかも初耳でした。そういうのもちょっと調べてみようと思います。
isset($replyData['Comments']["total_count"]) ? $replyData['Comments']["total_count"] ?>
回答の評価を上げる
以下のような回答は評価を上げましょう。
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
1
回答の評価を下げる
以下のような回答は評価を下げられます。
- 間違っている回答
- 質問の回答になっていない投稿
- 不快な投稿
評価を下げる際は理由をコメントしてください。
●なぜ英語?
Windows、Apple はアメリカの会社ですよね。
つまり、英語はどうやっても避けられないのです。
コードを書くということは、何らかのプログラム言語に従って書く訳ですが、
---日本語のプログラム言語はなく、<---訂正・削除
恐らく全てのプログラム言語が英語で書かれています。
それは、世界中で使用される為に、
世界で使用頻度の高い英語が選ばれている、
という流れがあるからです。
だから、国産のRubyも英語です。
ただ、プログラムを学ぶ敷居が高い、というのは同意見です。
将来的に小学校でプログラミングを教えるようになる展開が予想されるので、
数年後には「幼稚園からのプログラミング絵本」とか出るかもしれません。
●変数を英語にすべき?
1番の理由にインテリセンスが挙げられるのではないでしょうか?
コードを書く時には英語を使うことが大前提となります。
だから、変数名が日本語から始まっていると、
開発環境のメリットであるインテリセンスが非常に使い難くなってしまい、
開発効率が落ちることが予想されます。(個人開発だとしても)
なので、最初の1文字だけは英語にすべきでしょう。
2番目の理由としては、動くこと、ではないでしょうか?
コードを学ぶ人は世界中にいます。
ということは、どんな環境でも動くプログラムが良いでしょう。
となると、公表するコードは英語にした方が「親切」ですよね。
コードを公表する人達は、その視野に世界が写っている人が多いでしょう。
だから、公表されているコードが英語になるのは必然とも言えます。
まだまだ若輩者ですので、正しく回答できているか分かりませんが、頑張っていきましょう。
2015/12/17 10:22 投稿
コメント(4)
2015/12/19 18:11
「敷居が高い」誤用です
http://yain.jp/i/%E6%95%B7%E5%B1%85%E3%81%8C%E9%AB%98%E3%81%84
2015/12/22 01:27
回答ありがとうございます。
私が見ているコードは公表されているもの、公表されているものだから
どんな環境の人にも通用する英語である、というのはすごく納得できました。
目からウロコです。
isset($replyData['Comments']["total_count"]) ? $replyData['Comments']["total_count"] ?>
回答の評価を上げる
以下のような回答は評価を上げましょう。
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
1
回答の評価を下げる
以下のような回答は評価を下げられます。
- 間違っている回答
- 質問の回答になっていない投稿
- 不快な投稿
評価を下げる際は理由をコメントしてください。
日本語は、漢字がないと理解しにくいことがあります。
大分前ですが、変数名に「zokugara」とあり、何のことなのか全然理解できなかったことがあります。
(「続柄」のことでした。最近は「ぞくがら」でも許されるみたいですが、昔は「つづきがら」としか読まなかったので、、、)
英語も複数の意味を持つことがありますが。
日本語よりはましだと思っています。
また、他の方も言っていますが、日本語を使う(しかできない)人より、英語を使う(しかできない)人の方がはるかに多いため、自己満足の為のシステムでなければ、英語を使った方がよいと思います。
2015/12/18 09:19 投稿
コメント(1)
isset($replyData['Comments']["total_count"]) ? $replyData['Comments']["total_count"] ?>
回答の評価を上げる
以下のような回答は評価を上げましょう。
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
0
回答の評価を下げる
以下のような回答は評価を下げられます。
- 間違っている回答
- 質問の回答になっていない投稿
- 不快な投稿
評価を下げる際は理由をコメントしてください。
C#のタグが付いているのでC#を前提にします
C#やプログラムに限らずもともとコンピューターはASCII文字コードしか扱えなかったのでソースコードにも英数字及び記号しか使えませんでした
ShiftJISやEUCが出てきてもコメントや文字列には使えてもあくまでも中身を解釈して同行するわけではないので変数や関数の名称には英数字しか使えませんでした
それがソースコードにUnicodeが利用されるようになってから変数や関数名にいわゆる全角文字が使えるようになりました
それでもしばらくは空白に全角を使うとコンパイルエラー(かなり探すのが面倒です)になっていましたので、基本的にはそういったミスを踏まえて全角文字を禁止しているんだと思います
ただ、例えばVS215のVC#では空白を全角にしてもコンパイルエラーが起きないのでそういった面倒は起きなくなっています
なので自分はチームで作業する場合以外は日本語を頻繁に使用しています
ただインテリセンスを楽に活用するために最初の3文字くらいは半角の文字を使用しています
理由は漢字の方が意味が分かりやすいからってだけです
英語だと後で見たときに日本語に翻訳しても意味が通じないことはよくあるためですと言ってもきちんとコメントをつけておけばインテリセンスの候補と同時に説明まで出てくるのでぶっちゃけ個人の好み程度です)
ちなみに自分は英語力に自信がないので機械翻訳で英語にしていましたがおそらくは日本語に再翻訳すると意味不明なものになっているはずなので他の人が見ても意味が通じないものがほとんどだと思っていますので無理な英語化はデメリットしかないと考えています
それとこの質問の元々の目的で自作の物かどうかが分からないということでしたが、
関数や変数にポイントすると出てくる説明でnamespaceも含めて表示されるのでそれで十分わかると思います
2015/12/19 18:29 投稿
コメント(1)
2015/12/22 01:21
回答ありがとうございます。
言葉が少なかったですが、全角文字や日本語を使いたいというわけではなかったのです。
しかし、今は日本語も使えるのですね。
環境によって変数のつけ方はいろいろあるのだなと興味深かったです。
isset($replyData['Comments']["total_count"]) ? $replyData['Comments']["total_count"] ?>
関連した質問
-
解決済
Smartyのテンプレートで、PHPのプログラムでassignした配列の内容を確認したい
SmartyのテンプレートでPHPのプログラムで、assignした配列の内容を確認する時に、 PHPで配列の内容を確認するprint_r()関数やvar_dump()関数と、 同じ
-
解決済
インクルード攻撃について
インクルード攻撃はファイルをインクルードするために使う include文などを利用した攻撃だと知りました。 どういう方法で、インクルード攻撃をしてくるのでしょうか?
-
解決済
改行コードが置換されない(java)
javaである文字列に含まれる改行コードを置換したいのですが、上手く置換されません。 "\n"をreplaceメソッドで置換できると思ったのですが、何か間違っているのでしょうか?
-
受付中
Lispがパワフルと聞いたのですが
最近Lispが気になっていてぐぐってるのですが,括弧が多い,パワフルとの情報が多く見つかります. 括弧が多いというのはemacsのカスタマイズで遊んでいたことがあるのでとてもわか
同じタグがついた質問を見る
- C#
695questions
C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。
Akagi.S.
2015/12/17 00:35
回答ありがとうございます。
自分が言語を拡張して行っているというのは目からウロコでした。
その考え方はなかったです。
でも、それをするにしても「これって俺が作ったっけ?」ってなりそうなので
やっぱり「my_」とかつけたくなっちゃいそうです・・・
英語名が推奨される理由はよくわかりました(やっぱり初心者には優しくないとは思いますが・・・
わかるようになるまで、しばらくは変数には「h_」関数には「k_」とつけてやってみます。
みんなやってくれるといいのになぁ・・・