« 「なる」は使用禁止 | Main | メソッドや変数を英語で適切に命名(アクティブにするメソッド/証拠の配列) »

メソッドや変数を英語で適切に命名

グローバル英語に関連する軽い挑戦課題をお届けします。


【課題】あなたは、設計書にしたがって Java 言語でプログラミングします。指示にしたがい、メソッドや変数を英語で適切に命名しなさい。


まずは例をご覧ください。


【例】データを取得するメソッド名称を決める際、英語の可読性がよい方の名称を選びなさい。

(a) getData()
(b) takeData()


正解:(a)

手元の電子辞書(連語辞典)によると、dataと相性がいい動詞は、get, acquire, capture, obtain, collect など。

一方、"take"と"data"は、何となく相性がよくない印象です。

例えば、"take data" はデータを集める[gather]とも認識されます。

具体的には、「両手を広げてデータをかき集める」ような動作が頭に思い浮かびます。文脈があるため、(b)でも正しく通じると思いますが、やはり(a)の可読性が一枚上手です。

ちなみに、take による以下の用法もお馴染みかと。

take data to XXX (XXXにデータを送る)


■ 問いかけ

では、以下のクイズに挑戦しましょう。

以下の問1と問2、それぞれ可読性がよい選択肢を選びなさい。同時に、もし可能なら、他の選択肢の問題点を具体的に指摘しなさい。


<問1>出力用データを生成するメソッド名称を決める際、英語としての可読性がよい選択肢を1つ選びなさい。

(a) createOutputData()
(b) makeOutputData()
(c) どちらも可読性はよい、大差なし

結果を見る

締切:2014年09月02日18時00分
協力:クリックアンケート http://clickenquete.com/

<問2>存在を確認するメソッド名称を決める際、英語としての可読性がよい選択肢を1つ選びなさい。戻り値は boolean。

(a) isExist()
(b) hasExisted()
(c) exists()

結果を見る

締切:2014年09月02日18時00分
協力:クリックアンケート http://clickenquete.com/

|

« 「なる」は使用禁止 | Main | メソッドや変数を英語で適切に命名(アクティブにするメソッド/証拠の配列) »

Comments

PGから掃除までこなし中越印と10年以上オフショアしている私がマジレスします。

先に結論は…無いのですが(笑)、結局は英語うんぬんよりも
「マイクロソフトとかGoogleとかはどうしているのか」に寄る事も多いですね。
IsXXX, HasXXX, CreateXXXのように
言語(ライブラリ、例えばAndroidのソースコード)側で「こういう場合はこういう定義をしている」と前例があるなら
それに従った方が可読性は高くなる場合もありますし。

あとは、英語関係なく「Boolを戻り値にする関数はIsから始める」とか
アメリカ人もびっくりなコーディングルールも珍しくないですね。

一番開発で多いのが、やはり「新規作成・削除・更新」の関数でしょう。
ユーザーデータでも何でも、システムではお約束の処理です。
例えば、ユーザ情報を新規に登録する・削除する・更新する関数を定義するとき、私の経験上のバリエーションは以下の通りです。
これは、日中越印のソースを見てきたマイ・データです。

◆新規登録する
AddUserData()/RegistUserData()/CreateUserData()/InsertUserData()

◆削除する
DeleteUserData()/RemoveUserData()

◆更新する
UpdateUserData()/OverwriteUserData()/ModifyUserData()

一般的にはCreate/Delete/Updateだとはおもいますが(CRUD図とかいうくらいですし)、そうでは無いんですよね。

もう1つあるあるなのは…開始終了ですね。
Staet/Run/Begin
End/Finish/Close

これもまた経験上ですが、TOEIC 300~400点台のPG・SEが間違う単語は「動く」だと思います。
アプリケーションが動かない!と伝える場合、障害票に書く場合、
「Application doesn't move.」というのを何度も見ました(笑) work、なんですよね。

<問2>は、そこら辺のソフト屋のコーディングルールは(a)だと思います。
私は(c)が妥当なはずかと。

<問1>は、(a)でしょうけど、ファイル等にはきだすのではなく、
ただメモリ上に値をもらう場合はGetとかもシンプルで良いかと。

読み返さず投稿します!!

Posted by: anonymous | August 27, 2014 at 06:31 PM

anonymousさん、コメントありがとうございます。

出力用データを生成するメソッド名称として getOutputData() でもいいのではないか、とのご意見について、英単語のコアイメージの観点から補足説明します。


まず、英単語 get のコアイメージについて。

get のコアイメージは「状態変化」です。決して「取る(ゲットする)」ではありません。

すなわち、英語話者が get を使う局面では、前提条件として「以前の状態」と「変化後の状態」の二つの要素が暗黙のうちに頭の中で想定されます。


もし、出力用データを新規生成するメソッド名称を決める際、特に「新規性」に強調するなら get よりも create を使った方がよりイメージが伝わります。


一方、重要なアルゴリズムによって「既存データが変換」されて出力用データが生成される際には、make や get を使うとそれっぽい印象が醸し出せます。


makeOutputData() なら「ある原材料に人が手を加えてデータ生成した」印象が強調されます。


一方、getOutputData() を使うと、空っぽの状態だったメモリ空間に、所定の出力用データが移されてメモリ空間が満たされた状態に変化した印象が強調されます。

だからこそ、getOutputData() は「データ生成」よりも「データ取得」として用いられます。

.

授業のまとめのようで恐縮ですが、良い子のみんなは、英単語 get のコアイメージは「取得」ではなく「状態変化」だと覚えましょう。詳しくは明日のメルマガで配信します。

Posted by: 幸地司 | August 27, 2014 at 11:44 PM

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



« 「なる」は使用禁止 | Main | メソッドや変数を英語で適切に命名(アクティブにするメソッド/証拠の配列) »