狠狠撸
Submit Search
名前付け入门
?
3 likes
?
2,059 views
Takahiro Yaota
Follow
Code for KOSEN 勉強会#1での発表スライド
Read less
Read more
1 of 61
Download now
Download to read offline
More Related Content
名前付け入门
1.
名前付け入门 黝(@zakuro9715)
2.
自己紹介 ? 黝(@zakuro9715) ? ANCT
都市システム工学科 2年3年 ? ゲーム創作研究部部長 ? Web系(Railsできません)?ゲームプログラミング?作曲? デザイン?モデリング?その他手広くやってます ? Python3始めました
3.
すきな言語 Python / Fortran
/ C# / Go言語 Ruby / Perl FORTRAN きらいな言語
4.
やったこと ? JOI2013/2014本選(出ただけ) ? SuperCon2013本選(出ただけ) ?
近畿高専総体3位(微妙)
5.
やってること ? スカゼミで競技プログラミングと作曲の講師してます ? セキュリティスペシャリストの勉強 ?
C++ de ゲームプログラミング ? FORTRAN / Fortran ? ゲームプログラミング(C# + XNA / C# + Unity / Boo + Unity) ? Webバックエンド(Python + Django / Go言語) できること
6.
スカゼミに参加しよう(宣伝) ? 一緒にすれば、なんだってできるSNS「スカゼミ」 ? セミナーを開いて得意なことを教えたり、勉強したいことを 一緒に勉強したり ?
メンバーは200名以上 様々な分野のプロも参加しています ? 大手企業とも交渉中 お仕事を斡旋してもらえるかも スカゼミ
7.
アジェンダ 1.名前付けのスタイル 2.単语の选び方 3.まとめ 4.おまけ
8.
Q. 名前なんてどうでもいいよ 動けばいいじゃん
9.
A. 仰るとおりです でも…
10.
これでも名前がどうでもいいと言えますか Button1.clicked += (sender,
e) => { label2.Text = textbox1.Text; Button1.Text = “OK”; } 1 2 3 4 5
11.
名前も大事ですよね
12.
名前も大事ですよね はい Yes
13.
名前付けのスタイル
14.
名前付けのスタイル ?UpperCamel ?lowerCamel ?snake_case ?SCREAMING_CASE
15.
UpperCamel ? 別名PascalCase ? 単語の先頭を大文字にする ?
メソッドやクラス、名前空间に使われることが多い
16.
lowerCamel ? 単にCamelCaseとも言う ? 単語の先頭を大文字にするが、変数名の先頭だけは小文字 ?
変数名やメソッド名に使われることが多い。
17.
snake_case ? アンダーバーが蛇っぽく見えるから? ? 単語の間をアンダーバーで区切る
18.
例 namespace NameSpace { class ClassName { int
fieldName; static const int constField = 0; void MethodName(int localVar){} } } 1 2 3 4 5 6 7 8 9
19.
例 namespace NameSpace { class ClassName { int
fieldName; static const int constField = 0; void MethodName(int localVar){} } } 1 2 3 4 5 6 7 8 9 UpperCamel
20.
例 namespace NameSpace { class ClassName { int
fieldName; static const int constField = 0; void MethodName(int localVar){} } } 1 2 3 4 5 6 7 8 9 lowerCamel UpperCamel
21.
例 namespace nameSpace { class ClassName { int
fieldName; static const int constField = 0; void methodName(int localVar){} } } 1 2 3 4 5 6 7 8 9
22.
例 namespace nameSpace { class ClassName { int
fieldName; static const int constField = 0; void methodName(int localVar){} } } 1 2 3 4 5 6 7 8 9 UpperCamel
23.
例 namespace nameSpace { class ClassName { int
fieldName; static const int constField = 0; void methodName(int localVar){} } } 1 2 3 4 5 6 7 8 9 lowerCamel UpperCamel
24.
例 namespace name_space { class class_name { int
field_name; static const int CONST_FIELD= 0; void method_name(int local_var){} } } 1 2 3 4 5 6 7 8 9
25.
例 namespace name_space { class class_name { int
field_name; static const int CONST_FIELD= 0; void method_name(int local_var){} } } 1 2 3 4 5 6 7 8 9 snake_case
26.
例 namespace name_space { class class_name { int
field_name; static const int CONST_FIELD= 0; void method_name(int local_var){} } } 1 2 3 4 5 6 7 8 9 SCREAMING_SNAKE snake_case
27.
比較 パターン 例 UpperCamel(Pascal) AkashiKosen lowerCamel
akashiKosen snake akashi_kosen SCREAMING_SNAKE AKASHI_KOSEN
28.
どれつかえばいいの?
29.
どれつかえばいいの? →なんでもOK! ただし…
30.
名前付けのスタイル ? 基本的にはなんでもいいけれど、良くないスタイルもある ? 定数?マクロ以外のSCREAMING_SNAKEとか ?
见た目が気持ち悪くなければたぶん翱碍
31.
言語仕様と名前付けのスタイル ? 名前付けのフォーマットが言語仕様によって束縛される場合 がある 言語 例 Go
大文字から始まるとpublic Python _から始まるとprivate Ruby 大文字から始まると定数
32.
単语の选び方
33.
どんな値が入る変数か、わかりますか double tmp =
0.0;1
34.
ではこれならどうでしょう double average(vector<int> data){ int
tmp = 0; for(auto d: data) tmp += d; return tmp / (double)data.size() } 1 2 3 4 5 6
35.
こうすればもっとよくなります double average(vector<int> data){ int
sum = 0; for(auto d: data) sum += d; return sum / (double)data.size() } 1 2 3 4 5 6
36.
意味のない名前 ? tmpなどの意味のない名前は使わないほうが良い ? 特に、他に良い名前が見つからないから、という理由では使 わない ?
使うなら、なぜ使うのか説明できるようにしよう
37.
tmp ? tmpには使うべき時もある ? その変数が、一時的に値を保存するという意味しか持たない 場合はtmpを使うべき
38.
tmp ? a, bという2つの変数の中身を入れ替える tmp
= a; a = b; b = tmp; 1 2 3
39.
tmp ? この例だと、tmpはaの値を一時的に保存する、という役割 しか持たない。 ? いつでもtmpを使って良いということではない。最初に上げ た例のような場合は、もっと適切な名前がある int
tmp = 0; for(auto d: data) tmp += d; return tmp / data.length(); 1 2 3 4
40.
ループカウンタ ? i, j,
kなどは、一見意味のない言葉に見えるが、これらはルー プカウンタである、という意味を持っている ? ただ、単純にI, jと使うのではなく、よりわかり易い名前をつ けるべき
41.
ループカウンタ ? aのループカウンタをai, bのループカウンタをbiとしている ?
単純にi, jとつけるよりもよりわかりやすい for(int ai = 0; ai < an; ai++) { for(int bi = 0; bi < bn; bi++) { // do something } } 1 2 3 4 5 6 7
42.
メタ構文変数 ? foo, barなどのメタ構文変数には、意味が無いという意味が ある ?
サンプルソースなどで、意味のないコードを書くときなどに 使う
43.
Flag ? 読みやすいのはどっち? if(foo_flag)1 if(is_foo)1
44.
名前と役割 ? メソッド、フィールドなど、識別子の役割によってつけるべ き名前も変化する
45.
メソッド?関数 ? メソッドは、何かをする ? 名前は動詞から始めると良いことが多い
46.
getter ? Getterのgetは自明なので省略してもよい ? Go言語ではgetを省略することが推奨されている ?
省略するのを嫌う人もいるので注意 int GetNumber();1 int Number();1
47.
CovertToString ? ToStringで意味はわかるので、Convertをつけるのは冗長 ? 多くの言語で、ToStringが採用されている。 string
ConvertToString();1 string ToString();1
48.
真偽値 ? 真偽値を表す変数?関数には、Yes(true) or
No(False)で答え られる名前をつけよう bool running;1 bool is_running;1 bool run;1
49.
真偽値 ? 真偽値を表す変数?関数には、Yes(true) or
No(False)で答え られる名前をつけよう bool running;1 bool is_running;1 bool run;1 動名詞(実行すること) →Yes or Noで答えられない
50.
変数 ? 変数、フィールド、プロパティには状態を保存するもの ? 名詞を使うようにしよう
51.
まとめ
52.
チームの规则に従う。以上
53.
まとめ ? その名前を採用する積極的な理由を探そう ?それ以外思いつかなかった、のような消極的な理由はダメ ? 絶対OKなパターンはない。状況に応じて臨機応変に
54.
おまけ
55.
日本语识别子、使ってますか
56.
日本語識別子 on Unity
57.
public string 名前; public
string コメント; public string Name { get { return 名前; } set { 名前 = value; } } public string Comment { get { return コメント; } set { コメント = value; } } 1 2 3 4 5 6 7 8 9 10 11 12
58.
public string 名前; public
string コメント; public string Name { get { return 名前; } set { 名前 = value; } } public string Comment { get { return コメント; } set { コメント = value; } } 1 2 3 4 5 6 7 8 9 10 11 12 エディタに表示される名前
59.
public string 名前; public
string コメント; public string Name { get { return 名前; } set { 名前 = value; } } public string Comment { get { return コメント; } set { コメント = value; } } 1 2 3 4 5 6 7 8 9 10 11 12 エディタに表示される名前 コードからアクセスしやすいように プロパティで隠蔽
60.
デザイナーに优しいプログラミングを
61.
ご静聴ありがとうございました
Download