Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
おいしいスパゲティソースの作り方
(3人前)
●材料
• 合い挽き肉 …… 300g
• 玉ねぎ …… 1個分
• 人参 …… 1本
• マッシュルーム(茶)…… 3個
• 蜂蜜 …… 大さじ3
• トマト缶 …… 400g
• ケチャップ …… 大さじ3
• にんにく …… ...
1.カオスな命名
• 英語を使う(ローマ字不可)
• Pascal形式、Camel形式を使い分ける
• メソッドの名前は動詞から始める
• 反対の処理には単語の対義語を使う(begin ⇔ end)
• Bool型変数はis●●●、またはcan...
1-1変数名は独自記法
アニメキャラ・ゲームキャラの名前
を変数名にする オススメ!
非推奨のハンガリアン記法を使用
var MAMI_TOMOE = new TextBox();
MAMI_TOMOE.Dispose();
intKouzaB...
1-2bool型変数を否定形で命名する
IsChanged :変更があったときtrue、なかったときfalse
IsNotChanged :変更がなかったときtrue、あったときfalse
IsChanged IsNotChanged
bool...
1-3大文字・小文字を変数の区別に使う
string Name = "Taro";
string name = "Hanako";
既に定義されているプロパティ名に似せると効果絶大
this.Text = "abc";
string text ...
2.分かりにくい構文
if (sourceCode.Contains("分かりやすい構文"))
{
sourceCode = sourceCode.Replace("分かりやすい構文","分かりにくい構文");
}
2-1構文が冗長
string s = "テキスト1.txt";
if (s.Length == 0 || s.Length > 10) return;
if (Regex.IsMatch(s,@"^テキスト[1-3].txt$"))
{
//...
2-2フラグを乱発する
int a = 0;
if (a == 0)
{
//処理1
}
else
{
//処理2
}
int a = 0;
bool flg = false;
if (a == 0)
{
//処理1
flg = true;
}...
3.スパゲティ要素満載のコーディング
3-1一文字で破綻するif文
if (条件式)
{
//処理
}
if (条件式);
{
//処理
}
• 条件式の後、処理がないと見なされる
• セミコロンでステートメントは終わり
• 処理は無条件で実行される
凶悪度
マジでシャレに
ならん!
3-2名前を使用せずindexを使いまくる
var t = new DataTable();
(省略)
string s = (string)t.Rows[0]["ColumnName5"];
var t = new DataTable();
...
3-3ループカウンタ変数の「i」「l」を「1」と間違える
string[] strs = { "りんご" , "ゴリラ" , "ラッパ" };
for (int l = 0; l < strs.Length; l++)
{
if (strs[1...
3-4コメントでコーディングしてある
凶悪度
for (int i = 0; i < 10; i++)
{
if (i < 5)
{
//処理1
continue;
}
//処理2
}
for (int i = 0; i < 10; i++)
...
終
Upcoming SlideShare
Loading in …5
×

プレゼンテーション

29 views

Published on

おいしいスパゲティソースの作り方

Published in: Technology
  • Be the first to comment

  • Be the first to like this

プレゼンテーション

  1. 1. おいしいスパゲティソースの作り方
  2. 2. (3人前) ●材料 • 合い挽き肉 …… 300g • 玉ねぎ …… 1個分 • 人参 …… 1本 • マッシュルーム(茶)…… 3個 • 蜂蜜 …… 大さじ3 • トマト缶 …… 400g • ケチャップ …… 大さじ3 • にんにく …… 適量 • 生姜 …… 適量 • 塩コショウ …… 少々 1. 合い挽き肉をボウルに入れ、塩コショ ウ、蜂蜜と混ぜ合わせる 2. マッシュルームをみじん切りにし、人 参玉ねぎをすりおろす 3. 合い挽き肉をフライパンに入れ弱火で 飴色になるまで炒める 4. 残りの材料を加える 5. 軽く混ぜながら30分以上弱火で煮込 む
  3. 3. 1.カオスな命名 • 英語を使う(ローマ字不可) • Pascal形式、Camel形式を使い分ける • メソッドの名前は動詞から始める • 反対の処理には単語の対義語を使う(begin ⇔ end) • Bool型変数はis●●●、またはcan●●●と命名する • 事象が起こる前か後かで現在進行系、過去形を使い分ける • 配列の変数名は複数形にする
  4. 4. 1-1変数名は独自記法 アニメキャラ・ゲームキャラの名前 を変数名にする オススメ! 非推奨のハンガリアン記法を使用 var MAMI_TOMOE = new TextBox(); MAMI_TOMOE.Dispose(); intKouzaBangou 生産性ガタ落ち あなたの評価もウナギ下がり! 凶悪度
  5. 5. 1-2bool型変数を否定形で命名する IsChanged :変更があったときtrue、なかったときfalse IsNotChanged :変更がなかったときtrue、あったときfalse IsChanged IsNotChanged bool IsNotChanged = false; if (IsNotChanged) { //処理 } 凶悪度 • 否定を表す「!」とつけようと したとき、混乱する • 条件の真偽を間違えれば処理も 逆に!
  6. 6. 1-3大文字・小文字を変数の区別に使う string Name = "Taro"; string name = "Hanako"; 既に定義されているプロパティ名に似せると効果絶大 this.Text = "abc"; string text = "xyz"; MassageBox.Show(Text); • タイピングミス一つ別の値を代入! • コンパイラもエラーを出さない 凶悪度 • this.Textはフォームに表示されるテキスト • "xyz"と表示させるつもりが"abc"と表示 オススメ!
  7. 7. 2.分かりにくい構文 if (sourceCode.Contains("分かりやすい構文")) { sourceCode = sourceCode.Replace("分かりやすい構文","分かりにくい構文"); }
  8. 8. 2-1構文が冗長 string s = "テキスト1.txt"; if (s.Length == 0 || s.Length > 10) return; if (Regex.IsMatch(s,@"^テキスト[1-3].txt$")) { //処理 } string s = "テキスト1.txt"; if (s.Length != 0) { if (s.Length <= 10) { if (s.Equals("テキスト1.txt") || s.Equalls("テキスト2.txt") || s.Equalls("テキスト3.txt")) { //処理 } } } 凶悪度 • ネストが無駄に深い • 正規表現で判定しない
  9. 9. 2-2フラグを乱発する int a = 0; if (a == 0) { //処理1 } else { //処理2 } int a = 0; bool flg = false; if (a == 0) { //処理1 flg = true; } if (!flg) { //処理2 } 凶悪度 • よくwhileと一緒に使われる • フラグの名前がflg1、flg2…… • 同時にたくさんのフラグ管理 悪用するといくらでも複雑な処理になる
  10. 10. 3.スパゲティ要素満載のコーディング
  11. 11. 3-1一文字で破綻するif文 if (条件式) { //処理 } if (条件式); { //処理 } • 条件式の後、処理がないと見なされる • セミコロンでステートメントは終わり • 処理は無条件で実行される 凶悪度 マジでシャレに ならん!
  12. 12. 3-2名前を使用せずindexを使いまくる var t = new DataTable(); (省略) string s = (string)t.Rows[0]["ColumnName5"]; var t = new DataTable(); (省略) string s = (string)t.Rows[0][4]; 凶悪度 • ひと目見て何の列なのか 分からない • 前に列がはいるとindexが ずれる 仕様変更で不具合 待ったなし!
  13. 13. 3-3ループカウンタ変数の「i」「l」を「1」と間違える string[] strs = { "りんご" , "ゴリラ" , "ラッパ" }; for (int l = 0; l < strs.Length; l++) { if (strs[1].Equals("ゴリラ")) { //処理 } } 凶悪度 分かりにくい!
  14. 14. 3-4コメントでコーディングしてある 凶悪度 for (int i = 0; i < 10; i++) { if (i < 5) { //処理1 continue; } //処理2 } for (int i = 0; i < 10; i++) { if (i < 5) /* { if (i == 2) */ { /* break; } */ //処理1 continue; } //処理2 } もはや悪意 しか感じない!
  15. 15.

×