コーディングルールについて

まあ基本的なことが書いてあるけど、いくつか注意。
http://eetimes.jp/article/23004/

ルール1

つまり「ぶら下がり型if文の禁止」。
基本はこの通りなんだけどLinux Kernelだとむしろ推奨していたりする。


http://www.linux.or.jp/JF/JFdocs/kernel-docs-2.6/CodingStyle.html

Do not unnecessarily use braces where a single statement will do.

1つの文しか実行しないところに、必要のない括弧を使わないでください。


if (condition)
	action();

if ( 条件文 )
	action();


始めてLinux Kernelのソースを見たときはビックリした。
ヘッダに関数が普通にあったりとか色々。


GCCのソースは違う意味でビックリだけどね。
あんなの読めるか。
Schemeにはまっている今だったら多少は読めるのかな?(多分無理)

ルール6、ルール9

C99の構文は結構便利。(個人的にはPC上だとC99 + gccじゃないと開発がだるい。)
けどルール6で移植性とか言っときながらC99の構文を使うのはNGかと。
あと、C++風の1行コメントとか、さらに1行コメントにASCII文字以外を使うとかもっての他だと思う。


理由として、この記事はそもそも組み込み系をターゲットにしている。
が、実際組み込み系のCコンパイラだと未だにC99に対応していない等当たり前。
gccが使えるプロジェクトならいいんだけど、その場合もコンパイラが将来変わらないとは言いきれないのが辛い。


どうでも良いけどルール9はマクロ関係なく呼び出し元を確認しないのが問題だと思う。

オライリーのC#本が届いたので読んでいる

まだ始めの内でC,C++とほぼ同じなので、パラパラと適当に読んでいる。
なんというか、ほんとにプログラムが始めての人でも読めるように書いてあるのでC,C++等他の言語経験者には多少回りくどい本。


ただ、C#も規格にまでなったんだから開発環境と言語仕様は分けて説明して欲しい。
いくらマイクロソフトのVisual C#デファクトスタンダードだからといっても酷いと思う。

多値の便利さが分かってきた

Gauche本では使えることは分かったけど、便利さがいまいちよく分かっていなかった。
土日にちょっと弄っていてやっと便利さが分かってきた。


使い方は、戻り値として複数の値を渡したいときならリストにして返せばいい、と今までならば考える。
けどわざわざリストを作るのはメモリ的にも時間的にも無駄。
さらに受け取った側でまたリストにcar,cdrとかの操作が必要なのでさらに無駄。
しかし多値ならば、戻り値を変数に直接渡せるし、リストとしても受け取ることが出来る、と。
あとは、let1とかもお気に入り。
けどcall/ccとかマクロとか使っていない。


Schemeプログラマのレベル10だとレベル4からレベル5に足を踏み出したと言った辺りかな?
レベル5まで行ったらとりあえずSchemeプログラマと名乗っても問題無しとか。


On Lispはまだ5章なのでまだまだか。
これが終わったらSICPに再挑戦したいけど、そのまえにC#もなんとかしないと。

“日本版Kindle”なるか auの「読書ケータイ」を写真でチェック - ITmedia NEWS

携帯電話。
自分で*.txtとかを入れて見れるんだったら買い換える。
と思ったけど、2年契約が2009年8月なのでナンバーポータビリティで移動も検討だな。


追記:
Androiddocomoだった。