プログラミング作法
- このページは
- tips
- メソドロジー
- 16進数記法で意味のある言葉
- 命名規則
- プログラミング指針
- プログラミング手順
- プログラミング心構え
- 開発プロセス
- ユーザビリティテスト
- セルフ・マネジメント
- ビルド・リリース
- デスマーチ
- 用語
- 参考文献・参考ウェブページ
- 履歴
プログラミング作法についてのメモ、TIPS。
メソドロジー(方法論)だけでは何も作れない。
16進数でかける単語。
これらを利用するとデバッグ時に初期化した数から変化しているかどうか確認する事に使える。
- 0xbad
- 0xbabe
- 0xcafe
- 0xdead
- 0xbeef
- 0xface
- 0xfeed
- 0xdeadbeef
- 0xabadcafe
- 0xabadface
- 0xbabeface
自分の命名規則として、ハンガリアン記法をベースに使う。
冗長な部分(ループ変数など)は省略してもよい。ルールはまだ不完全。
ハンガリアン記法
- ハンガリアン規約による名前は3つの部分から構成される。
変数名 = 一つ以上のプリフィックス + ベース型 + 限定子
- MS 発端。
- 利点
- 多くの名前が標準的に決められているため、個別のプログラムや関数で覚えるべき名前が少なくて済む。
- 個々人の命名による不正確になりがちな部分を正確に表現できる。
the Indian Hill C Style and Coding Standards
広い範囲のコーディングスタイルの規約。
シンプルでわかりやすい、常識的なスタイルになるので必須。
短縮形
一般的に短縮形が通じる言葉は短縮形を使う。
わかりにくい言葉には短縮形は使わない。
自分のルールだが、なるべく一般性を持たせているつもりで記載している。
短縮形 | 意味 |
coord | coordinates, 座標系 |
src | source, ソース |
dest | destination, ディスティネーション
dst は可読性にかけるため使用しない。 |
| |
| |
主な方法
- フローチャート
- トップダウンプログラミング
- ボトムアッププログラミング
- 構造化プログラミング
- オブジェクト指向設計
どれかひとつに固執せず、もっとも適しているものを
適宜選べばよい。
ソフトウェアのライフサイクル
- 要求仕様書作成
- 機能仕様書作成
- コード設計
- 主要アルゴリズム
- モジュール仕様
- ファイルフォーマット
- データ構造
- コーディング
- プロトタイプ作成
- 不足部分の付加
- テスト
- デバッグ
- リリース
- 保守
バグ修正
- 改定とアップデート
はじめから繰り返す
プログラミングする時に時たま何も出来ないときがある。
そういったときでも何とかエディタを立ち上げて編集し出せば何とかなることがある。
それをはじめることが難しい。
http://japanese.joelonsoftware.com/Articles/FireAndMotion.html
定量的評価手法としては、アンケート調査。
定性的評価手法としては、ヒューリスティック(経験則)評価、ユーザビリティテスト(被験者が実行する過程を観察し、行動、発話からUIの問題点を発見する)。
参考:
http://www.usability.gr.jp/whatis/evaluation_method.html
自分ひとりでできるプロジェクトの改善の方法。
1. デイリービルドできるサーバをつくり、makefile を書く。cronも作る。ユーザビリティテストを自分で行う。
2. CVS とBTS をつくり、自分で運営する。
3. 自分で自分のスケジュールと仕様書を書く。うぬぼれた指摘のメールは送らない。事実のみ。
4. ネックの人物がいれば、バグを見つけたときに修正せずにバグの結果のみを報告する。
自身で気が付けば成長できる。成長したら一緒にできる。
5. 生産性を確保するためならカフェや会議室で仕事しても良い。絶対にメーラやチャットは常駐させてインタラプトの隙を自ら作ってはいけない。
6. これらのプロセスにこだわりすぎず、結果を出しつつ実行すること。
ビルドは定期的にリリースすることで安定性を図ることが可能。
(不具合数・修正数・修正失敗数・未修正不具合数などをカウント)
また、QAチームをプロジェクトで設置することも重要。
ビルドをリリースするタイミングは多いと時間のロスになるが、
フィードバックにつながる。
この期間はトレードオフになるが一週間か隔週が一般的。
用語
----
showstopper, blocker, showstopper bug : 致命的な不具合でリリースを妨げるバグ。
言葉 | 定義 |
first build | 最初のビルド。
不安定だが早めにリリースしておくプロトタイピングという手法に使うことがある。
パッケージ化は困難。
バージョン番号はここからつける必要がある。 |
weekly build | 毎週のビルド。リリースに適した期間。 |
daily build | 毎日のビルド。
テストの自動化に成功したときには毎晩行うことができる。
また、自動化するまでにいたっていなくとも、
毎日ビルドが成功するかどうかを確認可能になる。
daily build サーバも作成しよう。 |
private build | ビルド番号が管理されないビルド。
QAチームにはリリースしない。 |
milestone build | 大きな単位でのビルド。
QAチームの外に出るビルドと考える。 |
latest build | 最新のビルド。
文脈で安定な最新、weekly の最新などに注意すること。 |
stable build | 安定したビルド。
リリースしてしばらく時間がたった状態でないといけない。
テストの自動化が済んでいればその時間を短縮できるもしれない。 |
candidate build | リリースする候補のビルド。 |
freeze build | ある箇所を凍結したビルド。
機能(feature)フリーズ、UIフリーズ、コードフリーズの順。
特にコードフリーズ後はレポジトリの管理をしないと大変な工数が必要になる。 |
release build | ユーザにリリースするビルド。
release build, final build, gold build などという。 |
参考:http://www.atmarkit.co.jp/farc/rensai/build06/build06a.html
デスマーチに関する事柄のメモ。
- クライアントは自分の望むことを知らない。
例えばかっこいい家がほしい、といったときにそれが
家具のメーカーであったり、表札であったり、詳細を自分が知らないことと、
一緒の原理で専門でなければ詳細を把握していないこと、を知る必要がある。
同様にボキャブラリも異なることを知る必要がある。
それが理解を助けるし、調査を入念に行う原動力になる。
http://japanese.joelonsoftware.com/Articles/TheIcebergSecretRevealed.html
- クライアントの何かのソフトウェアに対する評価はスクリーンショットの部分が大きい。
例えばlinux の新しいディストリビューションの評価はデスクトップの背景
だったりする場合がある。
また、プログラムの進捗も内容にかかわらず見た目が影響するときがある。
昨日は目に見えないもの。
-
-
-
Coding Style 個人リスト。重宝
-
JoelOnSoftware
著名なプログラマJoel 氏の興味深い考察集 日本語訳
時間の空いたときにちょくちょく読みたい。
-
C 実践プログラミング
-
プログラミング作法
- 2004/00/00 初版作成
- 2006/03/11 修正
- 2006/03/25 修正 Joel on software
|