読者です 読者をやめる 読者になる 読者になる

MyEnigma

とあるエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

良いプログラムを書く方法『プログラミング作法』

プログラミング作法プログラミング作法
ブライアン カーニハン,ロブ パイク,Brian Kernighan,Rob Pike,福崎 俊博

アスキー
売り上げランキング : 25738

Amazonで詳しく見る by AZlink



学校では、プログラミング言語を使う方法は教えてくれますが、

良いプログラムの書き方は意外と教えてくれません。



特に良いプログラムの書き方は、

何度も失敗した後に身につくものと考えられていますが、

この本はそのような良いプログラムの書き方を見事に一冊にまとめたものです。



使用するプログラミング言語に関係なく、

プログラミングにおけるまさに作法がわかりやすく書かれています。



もしこの本に学生時代に出会えていたら、

自己流の書き方をせずに済み、

様々な悲しい思いもしなくてよかったでしょう(笑)。



様々な書評でも、

非常に高評価の本であり、

すべてのプログラミングを愛する人に参考にしてもらいたい一冊です。



ここから以降は個人的な内容のメモです。

眼から鱗の一言

グローバルにはわかりやすい名前を、ローカルには短い名前を

当たり前のことはいちいち書くな

アサーションを使う

スタックトレースを取得しよう

関係ない部分を最適化するな

P251のgetbitsは正しいのか?

いくつかの関数を実際に実装してみたのですが、

P251のgetbit関数は正しいのでしょうか?

もし本当にある変数の位置pからn個のビットを取得するのであれば、

unsigned int getbits(unsigned int x, int p, int n){
    return(x>>(p+1-n))&~(~0<<n);
}

ではなく、

unsigned int getbits(unsigned int x, int p, int n){
    return(x>>p)&~(~0<<n);
}

では無いでしょうか?

この疑問を晴らせる方は、ぜひコメント欄に一言お願いしますm(_ _)m。

TODO

・ソートアルゴリズムを実装してみる。

・ハッシュについて詳しく学ぶ

・自動テストの方法を学ぶ