プログラマー志望なら英語を勉強して下さい

これからプログラムに関わる人たちへのお願いです。英語を勉強して、正しい命名をしてください。
言語 英語 開発 プログラミング プログラム
31000view 74コメント
55
ROBA @vjroba
んあー、適当な命名、ダメ。ゼッタイ。何やってるかわからん…
ROBA @vjroba
誰も見てないだろうけどプログラマーを志す皆さんへお願い。英語を勉強して下さい。小粋なジョークを飛ばせなくてもいいけど、コードの中で正しい文法、正しい単語で命名が出来る程度には勉強して下さい。適当に単語並べるだけじゃメンテする人が意味がわからなくて頭を抱えます。
ROBA @vjroba
メソッド名が適当なプログラマーが多いです。メソッドは命令ですので、必ず命令形で書いてください(is〜みたいなのは除く)。中学で勉強したと思いますが命令形は主語を取り払って活用なしの動詞で始める文章です。これが文章になってない人が多いです。読めません。勘弁して下さい。
ROBA @vjroba
単語を並べるだけでは文章になりません。英語の文章は主語、動詞、目的語の順です。糞を食らって西へ飛べを命令形でなく書くなら I eat a shit and fly to the west.ですが、命令形に直すと Eat a shit and fly to the west.です。
ROBA @vjroba
メソッド名にするなら public void eatAShitAndFlyToTheWest() です。 shitWestFly() みたいに書かれても意味わかんないんですよ。最低限文章として成立するメソッド名を付けてください。
ROBA @vjroba
中学校で習う英文法を理解していればプログラマーとしては十分です。単語がわからない時は辞書を引けばいいです。とにかく単語を並べ立てるのではなく文章で命名してください。プログラムとは意味の塊ですので、あなたにしか意味がわからない名前を付けないでください。
ROBA @vjroba
志のあるプログラマーなら、英語を読む力もある程度磨いておいてほしかったりする。プログラマーの技術力ってロジックを組む力、知識、調べる力の3本立てだが、英語を読めるかどうかで調べる力に格段の差が出る。ドキュメントが翻訳されてない、英語の質問サイトにしか答えがないなんてザラだし、
ROBA @vjroba
プログラマーとして、英語を書く力は他のプログラマーに迷惑をかけないための最低限の礼儀で、英語を読む力は実力の一部だと思う。
ROBA @vjroba
先生仕事やってた頃、新しく入ってきた生徒には真っ先にJavaのAPIドキュメントとアルクの辞書をブックマークさせてた。僕からプログラミング習うなら適当な命名なぞ絶対に許さんので辞書は必須。でもどうしても英語苦手って言うならローマ字でも許す。ただし日本語で正しい命名をすること。
ROBA @vjroba
彼らもプログラマーになろうと思って学びに来たのに口うるさく英語を注意されるとは思わなかっただろうなあ。でも命名が適当な人は伸びないんだよ。
ROBA @vjroba
そういやメソッド名についてばかり書いたけど、当然ですが変数名、クラス名も正しく命名してください。コードを読んだ人が「この変数何?」って思わない名前を付けてください。どこから読んでも読んだ瞬間に「ああ、これは◯◯ね」とわかる名前を付けてください。変な省略はやめてください。

コメント

SAKURA87@多摩丙丁督 @Sakura87_net 2015年8月6日
参考文献も英語のほうが多いだろうしねぇ。
夢乃 @iamdreamers 2015年8月6日
プログラマですっ 英語能力皆無ですっ なので関数名にもメソッド名にも変数名にも苦労してます(>_<)  自分だけ使うなんちゃってプログラムなら適当にローマ字使うこともあるけど、製品だと他人が困るからねぇ。下手すると、ロジックよりも命名の方に時間がかかったりする。(いや、流石にそれは言い過ぎか)
kusano @t_kusano 2015年8月6日
どうせネイティブから見たら変な英語なんだからローマ字で書けばいいのにね。ぼくは英語できます大会ならミキタニのところでやってれば?
双馬 凜 @rin_souma 2015年8月6日
メソッド名なんざ適当でかまわん、仕様書とコメントさえちゃんとあれば てーか文法にこだわってくそみたいに長いメソッド名つけられるほうが迷惑 ただ読む力は本気で必須、英語のドキュメントを読まざるを得ない機会はめっちょ多い
まるい りん @maruirin 2015年8月6日
すごいわかる!!!勉強先のサイトも英語で書かれてること多いしね。 義務教育からの勉強で一番仕事の役に立つのって英語かもしれない。
出奔_研修中(20代) @spooky_desire 2015年8月6日
個人的にはこの記事が勉強になる。http://www.find-job.net/startup/english-for-engineers-naming-conventions メソッドは命令形って言われると、ちょっと気になるな。
Hide Yamauchi @MC6809EOS9 2015年8月6日
英語をできるようにする事には同意するけど、中にある例のメソッド名はSOLID的にはダメな感じ。このメソッドは二つの事をしますと言っているのはちょっとね。
辻井豊 @YutakaTsujii 2015年8月6日
そりゃそうだけど、コメントに日本語を利用できるソースなら、日本語で書いたらと思う。
アクローシス @PEM_00 2015年8月6日
日本語に絞ると自動翻訳されたヤツで、結局原文を見に行く事はちょくちょくあると思う
sk @sk_exe 2015年8月6日
「特定のプログラミング言語に関する知識への理解をより早める/深める」上で英語のリーディングスキルを持っていることが望ましいとは思うけど、メソッドの命名規則にまで言及されるとややもにょる。少なくとも"a"や"the"の冠詞ぐらいは別に省略してもええんやないの、という気がする。
trycatch777 @trycatch777 2015年8月6日
英語で無理矢理名前をつけて、辞書ひかないと知らない様な単語使われるリスクもあるが、ローマ字だってアルファベットの羅列を見て日本語をイメージしにくいという弊害はあるんだから、その会社やプロジェクトのやり方に合わせるのがいいという普通の話。個人なら好きにする。
sk @sk_exe 2015年8月6日
そもそも「正しい命令」というのは誰にとっての「正しい」なのか。
sk @sk_exe 2015年8月6日
sk_exe 誤:命令 正:命名
きゃっつ(Kats)⊿4/28乃木坂大阪アルバム個別 @grayengineer 2015年8月6日
命名が重要だということは否定しないんだけど、『メンテする人が意味がわからなくて頭を抱えます』はちょっと問題で、変数名や関数名を信用してコードを読んでしまうのは危険ですよね。もちろん名前が手がかりになることでより早く把握できるメリットはあるんですが、名前を信用しすぎてはいけないよと
きゃっつ(Kats)⊿4/28乃木坂大阪アルバム個別 @grayengineer 2015年8月6日
ぶっちゃけ、意味を持たないコード(BNA0001のような)で関数名や変数名やモジュール名をつけているプロジェクトも少なからず存在するし
きゃっつ(Kats)⊿4/28乃木坂大阪アルバム個別 @grayengineer 2015年8月6日
意味的に正確な名前をつけろと言われると、たとえば「月次集計テーブル更新ログの更新日時が本日から設定上の有効範囲内の日時であるかどうかをチェックする関数」とかの名前をどうするか、非常に悩ましいわけですよ。たいていCheckDate()とかにするでしょうけど、それだと似たような機能を持つ別の関数とダブったりしますからね。そうすると意味的正確性にこだわらないほうが命名が楽な場合もあるわけですよ
smw @Shi_MeiWo 2015年8月6日
こんなもん宗教論争だろ。現実的な話なら、プロジェクトごとに統一されているべきだってだけだ。
sk @sk_exe 2015年8月6日
必死で辞書を調べながら全ての命令を英語で命名したのにブラックボックス扱いにされるこんな世の中じゃ #ポイズン
R.K.M(あるけむ) @fwbc1965 2015年8月6日
「英語の文法通りに書く」より「コーディング規則」を優先すべき。定冠詞(特に「a」「an」)とか格変化とか「○○進行形」は不要だろう。キャメルケース自体が英文法に合致と言えるのか疑問だし。「正しい綴りで書け!」というのは同意する。※C言語のデータ変換関数(「atoi()」など)の表現は...
くろいえのぐ @enogu 2015年8月6日
その名前が参照されるスコープによるんじゃないですかね。10行やそこらのループの中で使われる一時的な変数ならxxxなんて名前でもコード読んで把握しろで通じますしクラス内のプライベートメンバなら多少省略しても読み返すのに直ちに困るレベルじゃない。それ以上のスコープなら殺す。慈悲はない。
くろいえのぐ @enogu 2015年8月6日
規約に書いてないならなるべく文法に従うべきではあると思う。you.catchPersonIfIsHentai(hage);とyou.isHentaiPersonCatch(hage);では君の立場は警察と犯罪者ほどの違いが生じる
緑川だむ @Dam_midorikawa 2015年8月6日
昔はファイル名すら英語とか言ってた時代もあったんだから、ソースコード内のメソッドや変数も日本語で書いていいんじゃねか
R.K.M(あるけむ) @fwbc1965 2015年8月6日
Dam_midorikawa 処理系(2バイト文字を識別子に使える)と開発体制(国内で全て開発・海外委託なし)に問題が無いなら、ソースコード内のメソッドや変数も日本語で書いてもよいと思います(動詞が最後に来るからわかりくいかもわかりませんが)。ローマ字表記は長くなり、(同音異義語など)意味がわかりにくいというデメリットがあるので、自分は推奨しません
げれ@gelehrte @gelehrte 2015年8月6日
メソッド名が長ければ長いほどメソッド名で判断しないので、ちゃんと日本語でコメント残してくれればいいや
Haruka McMahon @regicat 2015年8月6日
英語で名前付けようとして迷うようなメソッドは機能盛り過ぎだから分割しろっておっしょさんが言ってた。
粒あん・(中二上司) @keroa18 2015年8月6日
まぁ、最後はクライアント次第だけどな。
山吹色のかすてーら @sir_manmos 2015年8月6日
どれだけ他人のソースを呼んだのかは知らないけど、shitFlyWestみたいな関数名もEnglish Nativeのコードでもあるよ。てか、昔のコンパイラは文字数制限があるものも少なくなかったし。MS-DOS時代は31文字くらい。Xのコード見てなんて関数名が長いんだと。
山吹色のかすてーら @sir_manmos 2015年8月6日
てか、コード自体を見てやってるのか判らないのは、本当に複雑なのか、書き手か読み手のいずれか、または両方に才能がない。関数名で解決できる問題ではない。関数名に必要なのは、検索しやすい一貫性とかそういうもの。文法無視でも、一貫した決め方(書き手のくせを含む)があればOK。
ITDOREIKUN @wtpgjmwtpgjm 2015年8月6日
保守じゃプログラム言語も英語もわからない人がソース見ることが有るので日本語コメントお願いします、となるねん。業界参入に英語力にせよ開発力にせよ関門がない限り、日本語とちょっとした英単語で読めないと無理だと諦めて大分経ちました
ITDOREIKUN @wtpgjmwtpgjm 2015年8月6日
開発、保守、顧客みんなが共通の言語力というか最低ここまではわかるんだよってラインがあればいいんだけどねー
kokuju @kokuju 2015年8月6日
「そうだよな、StackOverFlowに書かれている英語くらいは理解できないと困るよな」という話がメインかと思ったがそうではなかった。
みなか@9月30日アカウント閉鎖 @minaka_saikyo 2015年8月6日
一番最悪なのは英語とローマ字の混在。俺が経験したほとんどの現場で統一できてない。英語よりもまずこれが先
ぐるり @gururi 2015年8月6日
ホントこれ大事。言葉通じない奴は何書かせても駄目だよ。
[UNMAINTAINED]らりお@旧垢 @L16777216 2015年8月6日
同意。ただ、メソッド名を動詞で初めるのは基本だと思うが、getFoo()のgetを略してfoo()として実装する流儀が許されるか/許すべきかちょっと気になる
根本(反プロ臣民) @croftsnemoto 2015年8月6日
クラス名もメソッドも変数もすべて日本語にしたC#ソースを見たSIerの人が「お、俺にも読める!」と叫んだのにはワロタ。
こぱやじたけじ @toranosuke_ko 2015年8月6日
抽象的に設計するというオブジェクト指向との矛盾・・・ オブジェクト指向嫌いだけど。(同じ名前ばかりで)
神代樹 in YW @itsuki9046 2015年8月6日
意味が伝わりにくい名前にしないために、って意味では同意するが、悪いが少なくともRubyじゃこの理屈当てはまらねえのよ。メソッドが「命令」じゃないから必ず動詞にするわけじゃないしね。
smw @Shi_MeiWo 2015年8月6日
最近の処理系では英数文字以外をメンバ名に使うのを許すのもあるから、思い切って日本語で書いてしまうのも手だ。「class Form extends AbstractTable implements iPrintable」よりは「class クラス・帳票 extends 仮想クラス・表組 implements インターフェース・印刷」のほうが分かりやすく、読みやすいだろう。
Lyiase @lyiase 2015年8月6日
凄い同意。 あと英語のニュアンスを正確に拾って欲しい。 英語や規約に基づいて書いてても、意味不明(日本語に直訳して初めて意味が分かるような)では意味が無い
まどちん● @madscient 2015年8月6日
どっちかというとメソッド名とか変数名とか変に省略してあるほうが分かりにくいので、長くてもいいから正確に付けた方がいい。
Mitchara @Mitchara 2015年8月6日
どうでもいいけど、shitは不定冠詞とらないんじゃないかな。冠詞つきでa shitだと「排便行為1回」みたいな意味になるような。
smw @Shi_MeiWo 2015年8月6日
登録を「regist」と命名するのはさすがにやめて欲しい。登録はregister。人によってはresist(抵抗する)なんて書く人もいて、後から読んだときに混乱する。
霜雪/ユ/ク@気力1x10^-42 @Hoarfrost_Snow 2015年8月6日
冠詞が混ざるとものすごく読みづらい・わかりづらいと思うんだが…というか冠詞混ざったのなんて見たことない。
KZRNM @naminodarie 2015年8月6日
オブジェクト指向でのメソッドって変数の振る舞いを表すんだから命令形じゃないんじゃないんですかね? a.Contains(b)だったら「aがbを含むか」という意味だし、a.ToString()だったら「aをstringに」になる。JavaでもC#でも同じ書き方をしている。
KZRNM @naminodarie 2015年8月6日
メソッドが命令ってどういう覚え方をしたらそうなるんだろうか。ContainsとかEqualsとかわざわざ三人称単数系にして動詞として書かれているんだから明らかに主語は変数ですよ。メソッドは命令ではなく変数の振る舞いです。
KZRNM @naminodarie 2015年8月6日
C言語とかの低レベルな話で関数が命令って言うならそうだけど、メソッドという言葉を使った以上は違うでしょとしか言えないですね
あの人 @vivvviivivvviv 2015年8月6日
この人が「Enumerable#each」をどう思っているのかを尋ねてみたいところ。
mmmmmtttt37 @mmmmmtttt37 2015年8月6日
メソッド名がやたらと長くなるのは、機能・役割の分担・分割やクラスの設計に原因がないか一度考えてみるといいかも。それと、「でもどうしても英語苦手って言うならローマ字でも許す。」って書いてある日本語が読めない人がいるってのは驚いたなあ。
smw @Shi_MeiWo 2015年8月6日
JavaScriptでは dom.addEventListener('click', handler) みたいな書き方をしているので、「三単現のsを省略したSV(O)構文」と言えるかも。
おずま@豆腐 @OZM_OZM 2015年8月6日
他人はすべからく自分のために自分にわかりやすいコードを書け、以上のことが読み取れないまとめ。
Ishida Brain Dam'd @tbs_i 2015年8月6日
「変数名は英語で」ってコーディング規則で"Nanbaa"ってつけられた現場の話聞きたい?
kkitmur @kkitmur 2015年8月6日
既に指摘がある通り、この動詞を頭につける命名規則は命令形ではない(使役的な命名ではない)です。「呼び出したときに動作が英文として理解しやすい」のが目的なので主語が無いだけです
kkitmur @kkitmur 2015年8月6日
A.isEmpty()とかB.goTo(place)だと意味分かりやすいよねってだけのことで、命令形だとか変な解釈を入れてこの二つの命名を分ける必要がないです
ベイシル @BasilLiddlehear 2015年8月6日
"shit"ってcountable nounだっけ?"eat a shit"より"eat shit"の方が違和感ないような気がするんだけど、ネイティブの方教えてください。
竹林 @chikulin365 2015年8月7日
資料が英語しかなくて読み能力が要るのは同意。技術用語は機械翻訳しにくいし、翻訳サイトに突っ込むとマズい文書もあるし。
@izanamu 2015年8月7日
『糞西は飛ぶ(原題: Shit West Fly)』 この映画の日本公開は何時ですか?
Shiro Kawai @anohana 2015年8月7日
BasilLiddlehear どちらもあって、意味によって変わります。eatにつながりそうなものならuncountableの方がありそうですが、ここの例だけでは何とも言えないかと(そもそも意味があるフレーズではないでしょうし)。aをつける用法でよくあるのはI don't give a shitとかですね。http://www.oxfordlearnersdictionaries.com/definition/english/shit_2
きゃっつ(Kats)⊿4/28乃木坂大阪アルバム個別 @grayengineer 2015年8月7日
BasilLiddlehear ネイティブではないけど take a shit とか What a shit! ってのは言いますね
silly walk @sillywalk7 2015年8月7日
hoge() fuga() kari() toriaezu() test() (>'A`)> ...
Sn @rbmio0079 2015年8月7日
そもそも英語を勉強してるような人材に払う金額でPG雇ってんの?と言う話がだな
Eiichi Tsuji @eureca7 2015年8月7日
なんか、関数名にこだわりすぎ。 そもそも、関数の中身をみて、自分の頭の中で符号化するのが苦手な人は、プログラム苦手なんでしょうね( ̄ー ̄)
ベイシル @BasilLiddlehear 2015年8月7日
anohana shitを「糞そのもの」と捉えるのであれば、aは付かなそうですね。一方「糞みたいな戯言やもの」と捉えたら付きそうですね。一応日本語系の辞書には「糞喰らえ」がeat shitと訳されていますが、和製英語でしょうね。eatとshitは結びつかないのでわからないといったところでしょうかね。
りそーすななじゅう @resources70 2015年8月7日
こんなの規約でどうあるかの問題で、プログラマーがどうとかの問題じゃないだろ。
倉瀬美都 @clausemitz 2015年8月8日
プログラマーなら英語の資料ぐらい読めなきゃダメって話かと思ったら、それ以前の低レベルな話だった。( ´Д`)
寿命 @hisa_ino 2015年8月10日
I eat a shit and fly to the west. を見て「え?shit って可算名詞?」ってすぐに違和感を覚えることができるくらいの英語力は身につけたいですね。鹿のぽろぽろウンチなら可算なのかも。
だいし @daishi_hmr 2015年8月11日
メソッドは「setArguments」や「findViewById」みたいな名前にしてね、ってて言われた時に「ああ、動詞+目的語って意味だね」と理解できる程度の英語力は持ってて欲しい。
Naruhito Ootaki @_Nekojarashi_ 2015年8月19日
他人(未来の自分を含)が読むことさえ意識してれば、枝葉はどうでもいい。
クイックドロー @_yppp 2017年1月31日
オブジェクト指向言語も英語も西洋哲学が元になっている。冠詞のaはまさにオブジェクトをnewしていることと同じ。冠詞は省略すべき。プログラムの世界でshitオブジェクトは不加算名詞かもしれない human.eat(new Shit()).fly(to = WEST)
masa_ @masap819 2017年9月2日
冠詞うんぬんの話は微妙だけど、ツイート主に一理あると思う。 / http://d.hatena.ne.jp/r-west/20090510/1241962864 ←プログラマーならぜひ読んでみてほしいエントリ。要旨は「適切な名前をつけようとすることは超重要」「適切な名前をつけようとすると、プログラムの構造も良くなっていく」 というものだけど、 この「適切な名前をつける」ために、ある程度の英語力は必要だと思う。
ログインして広告を非表示にする
ログインして広告を非表示にする