タグ

Readable Codeに関するatsushifxのブックマーク (6)

  • コードに対してコメントを書くと実装に関するコメントになる - きしだのHatena

    おととい、渋谷JVMというイベントがあって登壇させてもらったんですが、そのあとビール飲んでるときに、ぼくが「コード書く前にコメントだけ書くのいいよね」と言ったあとの返答としてきょんくん(kyon_mm)が言った言葉。 全体としては 「コード先に書いてそのコードに対してテストを書くと実装に対するテストになるし、コードを先に書いてそのコードに対してコメントを書くと実装に対するコメントになる」 という感じ。 ここに至るまでの話もおもしろかったんだけど、ここでは、コメントについて書いてみます。 まず、実装に対するコメントってどういうのかというと、こういうの。 id = findId(name); if(id == -1){ // idが-1だったとき登録 register(name); } いやそれはコード見ればわかるから、ってやつですね。 これは、こうやるとより適切です。 id = findId

    コードに対してコメントを書くと実装に関するコメントになる - きしだのHatena
    atsushifx
    atsushifx 2015/04/20
    自分としては、こういうのはコメントじゃなくてcantRegisterのようなメソッドにする。こういうコメントも有用だけどWhyやほかのコードにしなかった理由とかのほうを書いてほしい
  • メソッド名を考えるときに気をつけること - 亀岡的プログラマ日記

    大学時代に、プログラミングだけでAO入試で入ってきて、部活に熱中しすぎて一年留年して、成績優良で某幸之助じいちゃんの会社に行った奴がいましてね。そいつにずっと言われてたのが プログラムは自然言語としてよめるべき。コメントはいらないよ。 という話で、そのときは「いやいやwww」と思ってたけれど、最近の僕の思考は、もう「自然言語として読めるか」に尽きるようになってきた。 んで、こんな話。 @ngsw_taro @yy_yank @soudai1025 なるほどー。。。booleanなメソッドなのに、is~ではないことがわりと違和感ですが。。。そうでもないんでしょうか。。。— しょぼちむ@物理 (@syobochim) 2015, 3月 16 booleanはIshogehogeなのか? そうであることは多いですよね。でも、例外も非常に多いです たとえば、 Enumerable.Contains

    メソッド名を考えるときに気をつけること - 亀岡的プログラマ日記
    atsushifx
    atsushifx 2015/03/17
    リーダブルコードや達人プログラマー的な話。メソッド名にかぎらず名前は重要なんだけど、それはソフトウェアアーキテクチャやドメイン分析がきちんとできていないとうまく機能しない
  • C言語の開発者によるgoto文の使い方を対象とした実証研究の結果、「goto文は無害だと考えられる」 | スラド デベロッパー

    Edsger Dijkstra氏がgoto文の危険性を主張したのは1968年。それから50年近く経過した現在もgoto文は使われ続けているが、Dijkstra氏が懸念したようなgoto文の無制限な使用が行われているのかどうかという点や、それがバグの原因となるような有害なものなのかどうかといった点については、よくわかっていなかったという。こういった点に関する実証研究が家/.で紹介されている。 家/.「Empirical Study On How C Devs Use Goto In Practice Says "Not Harmful"」より 200万近いC言語のファイルと1万1千件を超えるプロジェクトからランダムに抽出した統計的に有効なサンプルを質的および量的に分析したところ、開発者はほとんどの場合gotoの使用を適切に制限しており、Dijkstra氏が懸念したような無制限な使用は行わ

    atsushifx
    atsushifx 2015/02/15
    リーダブルードを読めでFA。あえて追記すると、goto文は無制限につかえるから危ないのであって制御構造としては必要。breakなどの制限付きgoto文が出てきていることがその現れ。
  • 多くの若きプログラマたちが学ぶべきこと | POSTD

    私はこの7年半、 Ronimo でプログラミングを学ぶ多くのインターン生を指導し、様々なタイプの大学生や大学院生を見てきました。彼らのほとんどには、共通して言える学ぶべきことがあります。特別なテクニック、アルゴリズム、数学、あるいは特定の形式についての話だと思う人もいるかもしれません。もちろんそれも必要ですが、中心的なものではないと私は考えます。彼らが主軸として学ぶ必要があるのは、自己統制力です。常に可能な限り読みやすいコードを書き、開発中の変更により秩序がなくなってきた時にはきちんとリファクタリングを行い、使用されていないコードを除去し、コメントを追加することができるという力です。 プログラミングのインターン生を指導する際、この話にほとんどの時間をかけます。上級のテクニックでもなければエンジンの詳細についてでもなく、概ね彼らにより良いコードを書かせることに主眼を置きます。いつもインターン

    多くの若きプログラマたちが学ぶべきこと | POSTD
    atsushifx
    atsushifx 2015/02/08
    要するにリーダブル・コードとリファクタリングを読んで、それを実践しろと。マネージャー側には、そのための教育コストや時間などのリソースをちゃんと振り分けてくれでFA
  • ヨーダ記法を応援します - がるの健忘録

    軽く各方面とバトりそうなネタなれど。 まず。 ヨーダ記法(ないしNTT記法…って、うちのまわりではいってたんだけど、ググるとあんまりでてこない)ですが。 これは「if等の比較演算において、左辺に定数、右辺に変数を置く」記法です。 とりあえず幾つかネットで拾ってみる。 http://uchidak.net/yoda-notation このようにヨーダ記法とは、予期しない代入を防ぐために産み出された安全側へ倒すための書き方です。 しかしながら、現在はコンパイラがよしなにしてくれるため、あえてヨーダ記法で可読性を失うような書き方をすることをリーダブルコードでは推奨していませんでした。 http://qiita.com/moriturus/items/723eb17873381f94baf8 確かに、ヨーダ記法(1 == hogeのように記述する)は、発見しづらいミスを防ぐのに有用かもしれないが、

    ヨーダ記法を応援します - がるの健忘録
    atsushifx
    atsushifx 2014/12/22
    40代で老害には射るだろうけど、自分はヨーダ記法否定派。PHPならdefineで定数宣言するだろうからヨーダ記法にしても左辺がリテラルとすぐに気づくか疑問。それよりはIDEやLintなどのツールに任せるべきだと想う
  • while(1)のループとその除去について〜FizzBuzz問題を例に - わさっきhb

    いきなりですが問題です. 3つの正整数a,b,cを入力にとり,1からaまでを1ずつ順に出力しなさい.ただし,bで割り切れる場合は「Fizz」を,cで割り切れる場合は「Buzz」を,両者で割り切れる場合は「Fizz Buzz」を,該当する数の代わりに出力すること. FizzBuzz問題(wikipedia:Fizz_Buzz)では,bとcの代わりに3と5が使われますが,ここでは変数としておきました. さっそくですが解答として,ある学生が,以下のようにプログラムを書いたら,どのようにアドバイスしましょうか. #include <stdio.h> int main(void) { int a, b, c; int number = 1; scanf("%d", &a); scanf("%d", &b); scanf("%d", &c); while(1) { if (number % b ==

    while(1)のループとその除去について〜FizzBuzz問題を例に - わさっきhb
    atsushifx
    atsushifx 2013/09/03
    FizzBuzzの解答例。普通は最初のようなwhile(1)は書かないとおもうけどReadble Codeの例としてよい感じ。自分はscanfにプロンプト文を付けて、FizzBuzzの"i % b == 0"にカッコをつけるかな
  • 1