コーディング

デバグをするにあたって先入観を持ってはいけない

デバグをするにあたって先入観を持ってはいけない。 先入観を持った状態でデバグをすると、多分、運が良くないと簡単な不具合にも無駄に時間を書けることになる。まだ、なにが原因か分かっていないのに、最初から決めつけてしまった場合、決めつけた範囲に不…

要素の数と内容が決まっている配列を作成する時、より変更に強いコードとは?

下記のような、二つのコードがあるとする。ケース1:配列を宣言してから代入する。 var sample = new string[3]; sample[0] = "abc"; sample[1] = "def"; sample[2] = "ghi"; ケース2:宣言時に要素も設定する。 var sample = new string[] { "abc" ,"def" ,"g…

空のIF文を書きますか?私は書きません。

仕様書を書くときでも、何も処理しない場合は、あえて、「何もしない」など と記述してますので、それがコーディングに反映している感じです。仕様書と合わせる意味でも、わざわざ、Notを付けて、否定に書き換えたり しないですね。例?? If IsExists() Then …

コーディング規約は成長可能であるべき

プロジェクトの過程でコーディング規約を決める。その後はシステムが運用に辿り着くまで変更しない。 このような環境が多数派だと思う。 しかし現実はミスマッチとか想定外な事が少なからずあり、コーディング規約を逸脱した例外的なものが許容される事があ…

セキュリティを意識したコーディングをさせないという事

セキュリティを高めるために多分一番必要な事は、システム開発者にセキュリティを意識したコーディングをさせないという事だ。 セキュリティを意識したコーディングをするのはシステム開発者の役割ではなく、システム開発者が使うであろうフレームワークやプ…

匿名メソッドで再帰を実装する時

通常匿名メソッドを実装する時は、宣言と代入が同じになるパターンが多い。 例えば、下記のコードのように。 public void 匿名メソッドで再帰() { Func<int, bool> カウントダウン = (x) => { if (x == 0) { return true; } Console.WriteLine(x); x--; return カウント</int,>…

10のコーディングルール

以前、コードの10戒と題して、犬の10戒をまねしたコーディングルールを掲載しました。 しかし、若干カジュアルすぎるため仕事に適用するには文体を改修する必要があるかもしれません。 長いコーディング標準は、読むのも守るのもメンテするのも大変です…

パズル:nまでの整数を二つの組に分けて合計した結果が同じだった2番目と3番目を出力する

問題:1からnまでの整数を二つの組に分けて合計した結果が同じだった2番目と3番目を出力する。 public void nまでの整数を二つの組に分けて合計した結果が同じだった2番目と3番目() { //Enumerable.Select().Sum()は使わない方向で Func<int, int, int> xからyまでの計 = (in</int,>…

パズルが面白そうだったのでVBとC#で書いてみた

数学パズル 3桁の数値とその数値を2乗した値の各数字が1から9までの数字で構成されるような3桁の数値をすべて求めるプログラムを作成せよ。 例えば 763*763=582169 となるが、これは、1,2,3,5,6,7,8,9 からなり、4が抜けているからダメ。 C# var list = …

またまた、パズルが面白そうだったのでC#で書いてみた

問題 4桁の数値を順序を逆転させた数値(例えば、5432の場合は2345が逆転させた数値)で割ったときに、割り切れる4桁の数を求めよ。 (つまり、5432 / 2345 が割り切れればよい) ただし、商が1のものや、割る数が4桁でないものは除外する。 var list = from …

型付データセットを使うことで複雑なSQLはコードの外に追い出す

私のシステム設計の指針は複雑度の分散です。 だからコードの中に複雑なクエリは書きません。 問い合わせのクエリは、何らかの目的があって発行するものなので、JOIN等複数のテーブルが絡む複雑なクエリは、すべてRDBMS側にViewとして持つようにしています。…

接続詞を甘く見るな(日本語コーディング)

日本語コーディングでメソッド名を決めるとき 動詞 または 名詞+動詞 となるパターンが多いが、後者の「名詞+動詞」のパターンの場合、高い確率で接続詞を省略する傾向にある。 大抵の場合、文脈から接続詞の部分がなんなのか判断する事が可能だが、そうで…

コードの10戒

長いコーディング標準は、読むのも守るのもメンテするのも大変です。 なので、短いけど守ってほしい事と理由を犬の10戒の真似をしてまとめてみました。 1.名前は分かりやすいものにしてください。 わたしをよく知ってもらいたいのです。 だから名前は分かり…

このルールをMSが推奨している

コーディング規約を決める時の理由として「MSが推奨している」ってのは理由にまったくなっていないと思った。 なぜそのルールにしたのかを問いかけて 「MSが推奨している」 と言われて納得できますか?

明日から仕事なので世界のナベアツ問題の応用編もコードをLINQで書いてみた

勝手に世界のナベアツ問題と名付けてみました。 ルール 1から40まで数字を読み上げる。 3の倍数と3のついた数字の時だけアホになる。 応用編として、 上のルール+8の倍数の時だけ気持ちよくなる。 結果的に、よりいっそう脱力感に・・・。 var 読み上げるリ…

FizzBuzz問題の変わりに世界のナベアツ問題をコーディングしたらおもしろいだろうか

元は、世界のナベアツの「3の倍数と3のつく数だけアホになる男」というネタです。 勝手に世界のナベアツ問題と名付けてみました。 ルール 1から40まで数字を読み上げる。 3の倍数と3のついた数字の時だけアホになる。 応用編として、 上のルール+8の倍数の…

コードを読むという事と、型という情報と型推論

暗黙的型付け(その3) http://blogs.wankuma.com/rti/archive/2007/12/27/114850.aspx 乗り遅れてしまったので、ブログでこっそり自分のスタンスを、「コードを読むときにどうしてたか」思い出しながら・・・ コードを読むときは、そのコードが何を実現し…

コードレビューをしていて不思議に思うこと2

Dim ○○済 As Boolean で良いのに、 Private Const ○○済 As String = "1" Private Const 未○○ As String = "0" という宣言がしてある。

コードレビューをしていて不思議に思うこと

せっかく列挙型を宣言しているのに、その列挙型を利用する変数はInteger型で宣言してある。

意味の無い変数名

最近、こんな変数の宣言を見ました。 Dim 正規表現 As New Regex("[A-Z]")そりゃそうだ。正規表現だもんね。 でも、何の検証をするための正規表現なのかを表現してほしい。

読みやすいコードのためにLINQを利用する。

最初に断っておきたいこと C#3.0の話です。 LINQやラムダ式自体の説明はしていません。 簡単なサンプルにするため仕様がシンプルで効果を感じられないかもしれませんが、 もしもっと複雑な仕様だったら等、想像してみてください。まず最初に、下記のサンプル…

読みやすいコードを書くために匿名型を利用する。

最初に断っておきたいこと VB9の話です。 匿名型自体の説明はしていません。 最後になぜ今回はC#ではなくVBなのか説明します。 簡単なサンプルにするため仕様がシンプルで効果を感じられないかもしれませんが、 もしもっと複雑な仕様だったら等、想像してみ…

読みやすいコードを書くためにFunc型と匿名メソッドを利用する。

最初に断っておきたいこと C#3.0の話です。 Func型や匿名メソッド自体の説明はしていません。まず最初に、私が考える読みやすいコードの要素について断片的に提示します。 1.処理のスコープを最小にする。 2.今、読みたい粒度のコードしか読まなくても良…

保守フェーズっていつ始まるの?

システム開発において、保守フェーズが一番長いフェーズである事は言うまでもありません。 しかし書かれたコードにとって、保守フェーズはいつから始まるのでしょう。 運用が始まってから ではありません。これは、システム開発のライフサイクル上、目に見え…

「メソッドの分割」を行うきっかけ

「なんか、いろいろやってて、めんどくさいな。」 と感じたら。

母国語ではない言語で変数名を決定した時の時間経過による傾向

当たり前だけど、ちゃんと、最後までやる人はやるんだけど、そうじゃない人もいる。 プロジェクトには、そうじゃ無い人が入る可能性はゼロじゃない。 という前提で最初のうち ・ちゃんと英語と日本語の対応表を作るくらい頑張って辞書を片手に変数名をつける…

Boolean型の変数名は状態を表すだけで充分。過剰包装はいらない。

例えば「○○の処理中」であることを示すBoolean型の変数の名前を考えるとき、 私の場合「○○処理中」という変数名にするが、 「○○処理中フラグ」とサフィックスにフラグがついた変数名を見ることがある。これは止めた方がいい。 実際にif文でも書いてみるとわ…

「読みやすいコード」を考える

読みやすいコードというと、 「何をしているのか分かりやすい。」 という回答を得る場合が多い。 だが、それだけで果たして本当に読みやすいと言えるのだろうか。 今回は、本当に「読みやすいコード」とは何かを考えていきたい。 まず最初に、コードを読む必…

コードは能弁であれ。コメントは謙虚であれ。

コードは能弁であれ。 コメントは謙虚であれ。 これが、私が思うコーディングのベストプラクティスです。 あくまでコードが主役です。 コードに喋らせてやってください。 コードに喋らせられずにコメントに逃げてばかりいると・・・ コメントが暴走するか、 …

名前をつけてやれ

変数名、関数名、クラス名、メソッド名・・・ あらゆるモノは、名前が付いていることで存在が認められる。 だから、そのモノの存在理由を名前であらわしてやる必要がある。 より、存在理由が明らかな名前ほど、より明確に、より有効に働いてくれる。 そして…