質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.25%

  • C#

    5005questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

変数とかを英語にするとわかりにくくないですか?

解決済

回答 21

投稿

  • 評価
  • クリップ 12
  • VIEW 27K+

Akagi.S.

score 32

プログラムを独学で勉強している初心者です(2ヶ月くらい)
ちょっとした疑問があり、質問させていただきます。

プログラムのサイトなどには、変数などの名称には英語を使うべきと書かれています。
これはなぜなのでしょうか?

はっきり言って、この風習があるために勉強で困っています。
勉強のためにサンプルコードなどを見ていても、英単語が並んでいると、
どれがプログラム特有の命令で、どれがプログラム記述者が自由につけた変数名なのかが
わかりにくいのです。
変数は変数であることがはっきりわかったほうが便利だと思うのです。
プログラムに慣れている人にはそんな必要ないのでしょうが…

自分でコードを書く時には、あとから自分でわからなくならないように
変数名には必ず「h_」をつけるようにしています。
h_speed とか h_count とか。

英語にするべき理由と、初心者のうちだけでも変数がわかりやすくするような
オススメの記述法などあったら教えていただけると嬉しいです。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 21

checkベストアンサー

+38

私はもちろん「英語での命名を徹底すべき」と思っているのですが、質問文を読んでいてむしろ「なるほど⋯」と思ってしまいました。

特にここ。

どれがプログラム特有の命令で、どれがプログラム記述者が自由につけた変数名なのかがわかりにくいのです。

ここに、価値観の分かれ道があるんだろうと感じました。

多分私は(私を含め、多くの英単語命名者は)、クラスを作ったり関数を作ったりするのは「プログラムを作る」ことであると同時に「言語を拡張している」と考えています。
標準でたくさん便利なクラスが用意されているわけですが、自分がクラスを作ればそれも利用可能なクラスの一つになってより便利なわけですよ。言語環境を拡張していると言えます。

(私が最初に入った言語がBASICだったからというのもあるかもしれません。この言語ではプログラマが新しい命令を関数を作ることは(ごく限定的にしか)できませんでした。その後C言語を知って、標準ライブラリと同列に扱える関数をプログラマが書けると理解したときの感動と言ったら。無限に拡張できる言語じゃないか! と。)

プログラミングには、自分のプログラムを作っているという側面と言語環境自体を拡張している側面とがあり、特に後者のことを意識するともとの言語環境と同じような使い勝手、つまり命名規則をできるだけ守りたいという意識が働きます。

それで、英単語での命名に自然となるのです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/12/17 00:35

    回答ありがとうございます。
    自分が言語を拡張して行っているというのは目からウロコでした。
    その考え方はなかったです。
    でも、それをするにしても「これって俺が作ったっけ?」ってなりそうなので
    やっぱり「my_」とかつけたくなっちゃいそうです・・・
    英語名が推奨される理由はよくわかりました(やっぱり初心者には優しくないとは思いますが・・・

    わかるようになるまで、しばらくは変数には「h_」関数には「k_」とつけてやってみます。
    みんなやってくれるといいのになぁ・・・

    キャンセル

  • 2015/12/17 08:12

    「みんなやってくれるといいのになぁ・・・」
    ここポイントです。みんなが同じルールでプログラムを書いてくれたら読みやすいってのは、あるわけです。

    そしてプログラミングにおいては海外の人と共同作業する機会が多いことを考えると、必然的に何語に統一されていくかというと…?

    キャンセル

  • 2015/12/22 01:42

    追記ありがとうございます。
    自分は完全に一人で勉強してるので共同作業とかは考えないのですが
    世にあるコードはそんなことないですもんね。
    上の方で回答にあったPHPの$とかそういうルールがあればいいのになぁと切に思いました

    キャンセル

  • 2015/12/22 17:57

    と、まあいろいろ述べたわけですが、おっしゃるとおり一人開発や限定されたメンバーでの開発においてならわかりやすいルールこそ正義だと思います。

    キャンセル

  • 2016/09/03 18:11

    言語を拡張しているという考え方にはすごぶる共感できます
    最初のうちはまるで魔法のように思えた標準の機能が、実は自分の知っている構文の集まりでできているんだと思うとワクワクしますよね
    APIやハードと密接にかかわっているようなところまで掘り下げると本当に魔法のように思えてきますが

    自分で作ったものを区別したいというよりは、既に存在するものをよく理解し、それを区別した方がよいのではないでしょうか?
    C#では標準の関数軍はSystem名前空間やstaticなクラスに階層状に収められ、自作のクラスとは名前が衝突しないようになっています
    またライブラリなども、何かしらの命名規則を持って、区別が行えるようになっていることが多いです(例えばOpenGLでは、関数名の頭に必ずglが付けられています)

    ただし、プロジェクトを作成したときからusingによって名前空間を省略できるようになっているようなものは、大体覚るようにしておきましょう。
    経験を積めば、よく使うものについては自然と覚えられるので、それで十分です
    ただ数をこなすだけではなく、目標をもって問題を解決しながら進めていくのがよいでしょう。
    かくいう私も学習中の身ですが

    キャンセル

+18

オライリーのリーダブルコードという本をオススメします。
2章の「名前に情報を詰め込む」が質問者の回答となることでしょう。

私からの回答は「役割をはっきりさせましょう」です。
チームや数カ月後の自分が分かるように書くことです。
プログラムを見なくても役割を明確にすることが大事です。
日本語か、ローマ字か、英語かは本質ではありません。

どれを選択するかは(仕事で趣味を想定して)開発チームに伝わるかで決めてみてはどうでしょうか。
もちろんオススメは英語です。
英語はニュアンスが限られ明確で正確な命名ができ、世界共通語で一般的だからです。

ですが、役割をはっきりした命名の感覚を養う事のほうが重要かと思います。
そういう意味で乱暴な言い方で日本語でもいいという事を書いています。
誰にも迷惑をかけない限りは、色々やってみるのがいいのではないでしょうか。
(英語に慣れていくのが将来の為になります。コードを読む事が増えてきますので)

例)
例えば、return_url()という関数名からはURLを返却するという事が伝わってきます。

悪例)
もしこれが、my_url()、kansu_url()、func_url()という名前だとしたら
役割が分かりにくいです。
コードの中身を見る必要があります。

という具合に命名はプログラミングの醍醐味の一つです。
ぜひ、紹介した書籍を手にとって理解を深めてみてください。


追記

でも、それをするにしても「これって俺が作ったっけ?」ってなりそうなので
やっぱり「my_」とかつけたくなっちゃいそうです・・・

gitを覚えましょう。
git blameを使えば、一目瞭然です。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/12/22 01:38

    回答ありがとうございます。
    完全に一人でのプログラムなのでチームで決めるとかはないのですが
    「名前に情報を詰め込む」というのは非常に興味の湧いたフレーズですね。
    調べてみます(その本はなんか初心者には難しそうですが・・・)
    英語には確かに慣れたほうがいいですね;

    キャンセル

  • 2015/12/22 13:21

    難しくありません。初心者にこそ最初に読んでほしい書籍です。

    何年後かに、何故だかは、分かります。

    キャンセル

  • 2015/12/22 13:25

    283chocolatさんの仰る通り、難しい本ではありません。

    理解できそうな所だけ抑えて読破するくらいの気軽さで大丈夫です〜

    キャンセル

+5

そのコードに携わる人がわかりやすければそれでいいので、別に英語である必要は無いです。
様々な教科書などで「英語で書きなさい」と書いてあるのは最大公約数として英語で書くケースが多いという事だけかと思います。

日本においてプログラムの基礎を学習するのであれば
日本語プログラミング言語もありますし、最近の言語なら関数や変数にマルチバイト文字を使えることも多いです。

どれがプログラム特有の命令で、どれがプログラム記述者が自由につけた変数名なのかが 
わかりにくいのです。 
変数は変数であることがはっきりわかったほうが便利だと思うのです。 
プログラムに慣れている人にはそんな必要ないのでしょうが…

言語によりけりですが、例えばPerlやPHPでは変数は$から始まるように文法で定義されていますので、同じように不便だと考える人が一定数居るんだと思います。

初心者のうちだけでも変数がわかりやすくするような 
オススメの記述法などあったら教えていただけると嬉しいです。

記法としては、ハンガリアン記法(型を変数名の一部に使う)が分かりやすいと言えばわかりやすいかと思います。

あとは、VisualStudioやEclipseなどの高機能なIDEを使えば言語の関数や予約語とそれ以外はパッと見てわかるようになるので、そういった機能を使うのもいいでしょうし、学習段階においてはh_ という形でも特に問題無いと思います。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/12/22 01:34

    回答ありがといございます。
    >例えばPerlやPHPでは変数は$から始まる
    調べてみたら、これは分かりやすい!と思いました。
    一発で変数と分かる素晴らしい仕組みですね。
    こういうのを求めていたのかも・・・PHPはたぶん使うことはありませんが;
    ハンガリアンとかも調べてみます。
    IDEは色が変わるから便利でいいんですよね。
    困るのは書籍やネット上の黒一色のコードを見るときにわかりにくいのです。

    キャンセル

+5

こんにちは。

どれがプログラム特有の命令で、どれがプログラム記述者が自由につけた変数名なのかがわかりにくいのです。

この視点重要と思います。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/22 01:25

    回答ありがとうございます。
    変数と分かりやすい規則を自分でつけるのは良いと思います。
    みんなもつけてくれるとなお良いと思うのですw
    人によって必要なルールは違うということですね。
    とてもよくわかりました。

    キャンセル

  • 2015/12/22 14:41

    私が関わった案件で実際に世に出ている製品のソースコードに日本語変数が登場したのを見たことありますよ。わたしは Visual Studio 使いじゃないので一瞬ギョッとしましたがw

    キャンセル

+2

過去の質問です。
参考にしてください。

https://teratail.com/questions/21720

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/12/17 00:30

    ありがとうございます。
    一通り見てみました。
    ある程度みんな同じようなものを使っていたほうが、本当はいいのでしょうね。
    ただ、初心者にはほんと英語だけだとわかりにくいのです・・・

    キャンセル

+2

どれがプログラム特有の命令で、どれがプログラム記述者が自由につけた変数名なのかがわかりにくいのです。

言語のキーワードは、そう多くないので、全部覚えるのは難しくないです。
見た目ですぐ分かるように区別したいという人は、言語のキーワードだけ色が変わるエディタ(IDEなど)を使っています。

英単語が並んでいると、 

日本語を使いたいということでしょうか?名前に日本語が使える環境ならそれもいいかと思います。
ローマ字は、わかりにくいですよ。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/12/17 00:29

    回答ありがとうございます。
    多くない・・・でしょうか(汗
    リファレンスなどを見るととても多くのものが並んでいるように思えます。
    エディタはいいですね。ただ、サイト上のコードや本だと黒一色のものも多いのですよね。困ったものです・・・
    ローマ字でもわかりにくとはいえ、プログラム特有の命令でないことはわかるので
    そのほうが理解しやすいコードではありますね(自分の場合ですが)

    キャンセル

  • 2015/12/17 02:42

    > リファレンスなどを見るととても多くのものが並んでいるように思えます。
    ああ、「プログラム特有の命令」って、標準ライブラリの関数やメソッドのことを言ってたんですね。
    言語自体の機能のことかと思っての回答です。
    「プログラム特有の命令」って、初めて見る表現だったので。

    キャンセル

  • 2015/12/22 01:39

    たぶんそうだと思います。
    ライブラリやメソッドとかよくわかってないです・・・
    すべてプログラムに使用する命令なのでは?
    変数はxとか自分でつけるので分かるのですが。

    キャンセル

  • 2015/12/22 14:37

    プログラム特有の命令ときくと、予約語のことと思ってしまいますね。
    予約語というのは、たとえば「int」とかの、言語で意味のある役割を与えられていて、その名前で変数や関数の名前を付けられない語のことです(int int = 4; ができないことを考えてもらえるとわかりやすいと思います)

    たぶん otn さんは Akagi.S. さんがこれを指していると思われて「全部覚えるのは難しくない」とおっしゃられたのではないかと思います。

    キャンセル

+2

英語にする理由は特にないと思います。風習といいますか。

変数の命名規則は、会社やプロジェクトにコーディング規約があればそれに従う。なければご自分の自由に決めて構わないと思います。
規約は一般的に可読性や拡張性を考慮して決められていることが多いです。

言語毎にある程度一般的な命名規則があるので、最初はそれに従って書くと勉強になるかもしれません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/12/17 00:27

    回答ありがとうございます。
    自由につけていいもののはずですが、だいたい「英語でつけなさい」と書いてあるのですよね・・・
    趣味で他の人が見ないなら自由でいいのかもしれませんね。

    キャンセル

+2

英語/日本語という話より、

どれがプログラム特有の命令で、どれがプログラム記述者が自由につけた変数名なのかが
わかりにくいのです。

とのことで、
「プログラム特有の命令」っていうのが標準のライブラリを指して、
人が作ったものと自分が作ったものの区別を付けたいという話のようですが、
他の人が作ったものと自分が作ったものを区別する必要を余り感じません。
むしろ「読み込み動作」に「Read~」と「Yomikomi~」と2つの表現があったら
似たような動作なんだから同じ名前つけろよと思ってしまいます。

あと、みんながみんな自分が作った変数にh_関数にk_とマーカーつけたところで、
.net標準ライブラリ自体誰かが作ったものなので(コード見れます)
結局全部にマーカー付きます。

変数は変数であることがはっきりわかったほうが便利だと思うのです。 

(ローカル)変数とそれ以外を区別したいという話なら、
C#の文脈だとローカル変数、引数は小文字始まりで、
非privateな何かは大文字始まりのことが多いです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/12/22 01:29

    回答ありがとうございます。
    ライブラリ、というのがまだよくわかっていなかったのかも・・・
    誰かが作った便利機能、ということなのですね。
    なら一般的に英語になるのも致し方ない。。。うーん
    ローカル変数は小文字始まりとかも初耳でした。そういうのもちょっと調べてみようと思います。

    キャンセル

+2

●なぜ英語?
Windows、Apple はアメリカの会社ですよね。

つまり、英語はどうやっても避けられないのです。

コードを書くということは、何らかのプログラム言語に従って書く訳ですが、
---日本語のプログラム言語はなく、<---訂正・削除
恐らく全てのプログラム言語が英語で書かれています。

それは、世界中で使用される為に、
世界で使用頻度の高い英語が選ばれている、
という流れがあるからです。

だから、国産のRubyも英語です。

ただ、プログラムを学ぶ敷居が高い、というのは同意見です。

将来的に小学校でプログラミングを教えるようになる展開が予想されるので、
数年後には「幼稚園からのプログラミング絵本」とか出るかもしれません。

●変数を英語にすべき? 
1番の理由にインテリセンスが挙げられるのではないでしょうか?

コードを書く時には英語を使うことが大前提となります。

だから、変数名が日本語から始まっていると、
開発環境のメリットであるインテリセンスが非常に使い難くなってしまい、
開発効率が落ちることが予想されます。(個人開発だとしても)

なので、最初の1文字だけは英語にすべきでしょう。

2番目の理由としては、動くこと、ではないでしょうか?

コードを学ぶ人は世界中にいます。
ということは、どんな環境でも動くプログラムが良いでしょう。

となると、公表するコードは英語にした方が「親切」ですよね。

コードを公表する人達は、その視野に世界が写っている人が多いでしょう。
だから、公表されているコードが英語になるのは必然とも言えます。

まだまだ若輩者ですので、正しく回答できているか分かりませんが、頑張っていきましょう。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/12/17 10:23 編集

    > 日本語のプログラム言語はなく
    一応ありますよ

    キャンセル

  • 2015/12/17 10:35

    コメントありがとうございます!
    Mind 等があるのですね。。。

    キャンセル

  • 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

    回答ありがとうございます。
    私が見ているコードは公表されているもの、公表されているものだから
    どんな環境の人にも通用する英語である、というのはすごく納得できました。
    目からウロコです。

    キャンセル

+2

日本語は、漢字がないと理解しにくいことがあります。
大分前ですが、変数名に「zokugara」とあり、何のことなのか全然理解できなかったことがあります。
(「続柄」のことでした。最近は「ぞくがら」でも許されるみたいですが、昔は「つづきがら」としか読まなかったので、、、)

英語も複数の意味を持つことがありますが。
日本語よりはましだと思っています。

また、他の方も言っていますが、日本語を使う(しかできない)人より、英語を使う(しかできない)人の方がはるかに多いため、自己満足の為のシステムでなければ、英語を使った方がよいと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/12/22 01:23

    回答ありがとうございます。
    初心者にわかりにくかろうと英語のほうが良い理由は
    それはそれで分かるのですけどね・・・うーむ

    キャンセル

+1

ネットで英語圏(というかほとんど)のソースコードを参考にしようと思ったとき、または自分がソースを公開しようと思ったとき、英語であれば誰も困らないから英語であるのと、後で読み返すときのために英語にしておいたほうが無難なのです。
ローマ字で変数名を付けてちょっとでも略してしまうと、英語なら定番の略し方(widthならwなど)があるので検索できるところをローマ字だと標準的なすぐ誰でも思いつくような略が存在しないので後で自分ですら検索できなくて困ることがあります。

でも、英語だからと堅苦しく考えずCountやName程度の単語で名付けていいのです。
どうせよくできたソースだとわかりやすい命名しかされていないものですし、自身もそうなっていきます、何年かやると慣れてしまうので英語は気にならなくなります。

変数や関数の接頭ですが、私が個人的に長年使っている方法も提案してみます。
変数:v=value:例vCount
関数:m=method:例mCount()
引数:p=post:例mAdd(int pNum)//c系の古い既存ソースだとpはほぼポインタなので少し紛らわしいけど、型より用途を接頭にしたい派なので。
グローバル:g=global:例gvCount,gmCount()
ついでに、私のpもあれですが接頭hでh_だとc系のソースでハンドルの変数と被って紛らわしいと思います、後で苦労する可能性が高いのでやめといたほうがいいです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

フリーでやっているのでいろいろな職場で働いています。
あるパッケージのバージョンアップでAL32UTF8(Unicode)にしか対応しなくなり、
Oracle 10.2.0 JA16SJIS(SJIS) → Oracle11.2.0 AL32UTF8 の担当にされた時、
Unicode では半角カタカナとマルチバイト文字が1文字3バイト(1文字4バイトもあるらしい?)
になるので文字列が桁あふれする可能性が出てくるので、あらかじめテーブルやプログラムの
文字型変数の桁数を見直さなければならないが、それ以前に、マルチバイト文字を11文字以上で
設計した、テーブル名、列名などが30バイト以上になりエラーが多発。
Oracle データベース・オブジェクトのネーミング規則
地獄でした。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/12/17 09:32

    Orlofsky 様
    まさか、テーブル名、フィールド名が日本語ですか
    まさに地獄ですね。
    お疲れ様でした。

    キャンセル

  • 2015/12/22 01:32

    回答ありがとうございます。
    内容はあまりよく理解できませんが…日本語をそのまま日本語でつけようとはさすがに思っていませんでした(できるとも思ってなかった)

    キャンセル

  • 2015/12/22 13:41

    どちらかと言うとOracleがまずいという話でしょうか。

    キャンセル

  • 2015/12/22 20:21

    Oracleがまずかったといえば半角英数字と一部の特殊記号以外も使えるようにしてしまったので、マルチバイト文字で設計する人が出てきてしまったことです。設計する側はテーブル設計の論理設計(マルチバイト:日本語)と物理設計(半角英数字)を論理設計だけで済ませることができたのでテーブル設計の工数が減らせるのがメリットでしょうか?SQLを書く方は大変ですが。もちろん、テーブルを設計した人はUnicode対応はまったく考えていません。
    韓国で設計されたテーブルが全部ハングルだったと嘆いていた人もいます。(日本人でハングルを読める人は希少価値があります。)

    キャンセル

0

C#のタグが付いているのでC#を前提にします

C#やプログラムに限らずもともとコンピューターはASCII文字コードしか扱えなかったのでソースコードにも英数字及び記号しか使えませんでした
ShiftJISやEUCが出てきてもコメントや文字列には使えてもあくまでも中身を解釈して同行するわけではないので変数や関数の名称には英数字しか使えませんでした
それがソースコードにUnicodeが利用されるようになってから変数や関数名にいわゆる全角文字が使えるようになりました
それでもしばらくは空白に全角を使うとコンパイルエラー(かなり探すのが面倒です)になっていましたので、基本的にはそういったミスを踏まえて全角文字を禁止しているんだと思います
ただ、例えばVS215のVC#では空白を全角にしてもコンパイルエラーが起きないのでそういった面倒は起きなくなっています
なので自分はチームで作業する場合以外は日本語を頻繁に使用しています
ただインテリセンスを楽に活用するために最初の3文字くらいは半角の文字を使用しています
理由は漢字の方が意味が分かりやすいからってだけです
英語だと後で見たときに日本語に翻訳しても意味が通じないことはよくあるためですと言ってもきちんとコメントをつけておけばインテリセンスの候補と同時に説明まで出てくるのでぶっちゃけ個人の好み程度です)
ちなみに自分は英語力に自信がないので機械翻訳で英語にしていましたがおそらくは日本語に再翻訳すると意味不明なものになっているはずなので他の人が見ても意味が通じないものがほとんどだと思っていますので無理な英語化はデメリットしかないと考えています

それとこの質問の元々の目的で自作の物かどうかが分からないということでしたが、
関数や変数にポイントすると出てくる説明でnamespaceも含めて表示されるのでそれで十分わかると思います

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/12/22 01:21

    回答ありがとうございます。
    言葉が少なかったですが、全角文字や日本語を使いたいというわけではなかったのです。
    しかし、今は日本語も使えるのですね。
    環境によって変数のつけ方はいろいろあるのだなと興味深かったです。

    キャンセル

0

一理あると思います。ですが、扱うものによってであって、システムとして用意されているものだとか、だれかが作ったからだというので変数名を決めてしまうのはしっくりきません。
そういう区別は名前空間でOKですし、今ではIDEなんかの機能を使えば言語特有のキーワードなどは色分けされたり、
定義元を参照したりすることも容易に行えます。

英語が用いられるのは、例えばgithubなんかを使って公開するのであれば日本語ではなく英語の方がより多くの人に見てもらえるだとかもありますし、業界標準の常識的な英語を使うのが無難だからですね。

例えば日本人チームで医療系の帳票作成のシステムを構築することを考えてみると

チェックを行う場合は if( isHOGEHOGE )みたいに先頭にisをつけたり、ゲッターセッターパターンを使う場合は int GetMember() SetMember(int value)と書いたりしますが

介護保険番号を扱う変数はどのようにすればよいでしょうか。
int CareInsuranceNumber と定義することもできますが
int KAIGOHOKEN_NO と書いてしまった方がよいと個人的には思います。
理由としては日本人チームで書いているので英語に詳しくない人がメンバーにいるであろうことなどが容易に想像できるからです。
CareInsuranceNumberのように英語化してしまうとその他複雑な用語も英語にする必要が出てきますし、そのたびにそれを考えなければいけない、覚えなければいけないというコストが発生します。

介護保険番号の場合にはCareInsuranceNumberで通すとして、じゃあ次に、"廃用症候群評価表"や"掛かり付け医"、"要介護度"などの単語が出てきたら?
それらをわざわざ英語化してすべて覚えておくよりも、もっと日本人がパッと見てわかる名前をつけた方が効率がいいと思います。
ついでにこの場合DBからとってきた値をどうにかするのだとかが容易に想像ついたりしますしね。
あえて英語化するのはカッコつけだし周りをその土俵に引き込んでしまいまい悪手だと思っています。
またこの場合はIDやNOなどそこはカッコつけとけよって場合もあります。KAIGOHOKEN_BANGO これでは違和感が残りますしね。
あとはどの程度日本語でどの程度英語にすればいいのかの見極めはプロジェクトの方針でってことでしょうか。

ちなみに、h_などの名前を先頭につけておくのもアリです。
クラスのメンバーならば m_HOGEHOGEだとか、ポインターを表す場合はp_HOGEHOGEはよくあるパターンです。わざわざ定義元を参照しなくてもどういうものなのかがわかります。
末尾や先頭にどういう属性を持っている変数なのかを示すというのはハンガリアン記法ですね。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

言語によりけりですが、Javaなどでは、マルチバイト文字を変数名などに使えるのですが、ファイル名に直結するため、OS依存になってしまい、正しく動かないといったことがあります。

あと、漢字ばかりだと、お経なのか、中国語なのか…となったり。

ローマ字表記は、他の方も書かれているように、ごく稀に使うことがある程度で、基本的には英語です。
ローマ字だと、日本語での単語区切りが分かりづらくて読み辛いとか起こりやすいです。

言語組み込みだったりするキーワードやライブラリーとの区別が付きづらいという件ですが、言語にもよりますが、名前の付け方を工夫するくらいだと思います。

Javaなどの場合は、パッケージ名で明確に分かれるので、そのクラスのパッケージ名を調べればわかりますし、C言語のように、名前空間がない場合以外は、何らかの区別の仕方があるはずです。

オブジェクト指向言語で、メソッドのオーバーライドとかする場合、元々あるライブラリーのメソッドを上書きするため、逆に、同名にしなければならないですし、結局は、言語と設計次第なのかと思います。

Javaの場合、以下のようなパターンは普通にあります(しかも、javaから始まるパッケージ名なので、ビルドインライブラリーです)
java.util.Date
java.sql.Date

C言語でも、大抵は
shem_get といったように、アプリケーションハンガリアンで区別出来るようにしていることが多いと思います。
なので、言語毎に、「こういう風にして区別する」という定石はあると思うので、それを調べて使いこなせるようになることが、プログラミングのノウハウの一つだと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

どれがプログラム特有の命令で、どれがプログラム記述者が自由につけた変数名なのかがわかりにくいのです。

つまり、関数と変数の区別が付きづらいって事ですね。
私はPerlから入ったので(Perlは変数に$が付きます)、
他言語使った時に読みづらさを感じました。

しかし実際は別の手段で区別が付くようになっています。
例外は有りますが
普通は関数は動詞で変数は名詞で書かれます。
それが分かると記号が無くてもすんなり読めるようになりました。

名前はとても重要ですので、
変数等の名前の付け方のコツを調べてみることをオススメします。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

日本語というのが仮名漢字で書きたいということなのかローマ字ということなのかわかりませんが、いずれにせよ、実際に書いてみてメリットとデメリットを実感していただくのが一番なのですが。

個人的に仮名漢字の変数名を試してみたことがありますが、変数を書くたびに入力を切り替えるのが煩わしくて、こりゃやってられねーわ、となって諦めました。変数名を書こうとするたびに入力を切り替えるのは実際にやってみるとけっこうな負担でした。
ただ、この辺は感覚差もあるかと思います。全然苦にならない、という方もいるでしょうから、その場合はそのままの勢いで学習を進めてしまっても良いんじゃないかなと思います。言語の仕様としてマルチバイト文字で変数名を命名できる場合は(個人のプログラミングならば、という前提は付きます。チームでの開発となるとまた話は別ですが)それを使うことをためらう理由はないでしょう。

ローマ字となると、あとから読んだ時にぱっと見て何語なのかわからないような語が多くなり、かえって読みづらくなりがちですし、表記の揺れが大きいので、おすすめしません。が、これも個人差があるかもしれません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

命名規則で何つけるのがいいか困った時は、みんながよく使うネーミングを日本語から変換してくれるツールあるので、
参照してみるといいかもです。
https://codic.jp/engine

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

解決済みですが意見を言わせていただきます。
僕は英語の方がいいかと。
日本語で打つと、例えば日本語のコードを打っていた時に、Javaでの例で、
(名前 + "という名前の人は、~。")
というコードを書いたときに、変数名と文がごっちゃになると思います。
ただ、日本語で打つのも、本人がわかりやすかったらいいかと。
しかし、ごっちゃになるという理由から、僕は英語を推薦します。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

-1

こんにちは。わたしもC#を独学しました。
最近は英語で書きます。略語は使わず、ほぼフルに単語を使用しています。

最初は、漢字(ひらがな・カタカナ)を使いました。
program中で、自分のつけた変数を、一目瞭然で把握できます。
それだけで可読性がアップします。
1-2年はそれでよいと思います。

programに慣れてくれば、変数とそれ以外を次第に容易に区別できるようになります。
それまでは漢字を使うのもありだと思います。
ローマ字は読みにくくて最悪です。

と思ったら、いま3人のチームでC#を書いてますが、ばりばり変数に漢字使ってました。
   int textbox幅 = 140;
とか。

もちろん
   int textboxwidth = 140;
でもいいけど、格段にわかりやすいかと。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

-3

命名規則みたいなものね?

大昔だったら…
int型なら「i_XXX」
char型なら「c_xxx」

みたいな、暗黙(?)のルールがあったけど。

今はローマ字でも英語でも、コメント入れれば大丈夫なんでない?

#プロジェクト内での変数だったら、メンドクセーけど、他の変数命名規則に準ずるべき。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

ただいまの回答率

91.25%

関連した質問

  • 解決済

    Smartyのテンプレートで、PHPのプログラムでassignした配列の内容を確認したい

    SmartyのテンプレートでPHPのプログラムで、assignした配列の内容を確認する時に、 PHPで配列の内容を確認するprint_r()関数やvar_dump()関数と、 同じ

  • 解決済

    インクルード攻撃について

    インクルード攻撃はファイルをインクルードするために使う include文などを利用した攻撃だと知りました。 どういう方法で、インクルード攻撃をしてくるのでしょうか?

  • 解決済

    改行コードが置換されない(java)

    javaである文字列に含まれる改行コードを置換したいのですが、上手く置換されません。 "\n"をreplaceメソッドで置換できると思ったのですが、何か間違っているのでしょうか?

  • 受付中

    Lispがパワフルと聞いたのですが

    最近Lispが気になっていてぐぐってるのですが,括弧が多い,パワフルとの情報が多く見つかります. 括弧が多いというのはemacsのカスタマイズで遊んでいたことがあるのでとてもわか

  • 解決済

    Ruby プログラムファイル名を出力したい

    プログラムのファイル名を出力したいのですが、 出力する方法はありますでしょうか? ご存知の方いましたら、どなたか教えていただけませんか?

  • 受付中

    PHP SQLインジェクション対策について

    PHP・Mysqlを使用してSQLインジェクションについての質問です。 SQLインジェクション対策について皆様はどのようなコードを書いておられるでしょうか? SQLインジェクシ

  • 解決済

    MS-Accessで一連の操作をマクロにする

    MS-Accessで一連の操作手順をマクロに記録させたいのですが、 MS-Accessには「開発」タブが見つかりません。 どのようにすれば、一連の操作をマクロにする事ができ

  • 解決済

    同じプログラムをコピーしたものが表示がおかしい

    同じプログラムをコピーしたものが表示がおかしい test7.c:28:22:warning: unknown conversion type character 'U' in fo

同じタグがついた質問を見る

  • C#

    5005questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。