skillup

技術ブログ

プログラミング全般

ミスを少なくする工夫について

投稿日:2016年6月2日 更新日:

プログラマであればだれもが「いかにバグを少なくするか」に腐心すると思います。

ところが、人間がある以上、バグ(ミス)は絶対にゼロにはなりません。バグ云々以前に、「人間はもともとミスをする生き物だ」という前提で取り組むことが大切でしょう。

そこには「エラーをおこさないようにする」「テストをしっかり行う」は対策とは言えません。ミスとは人間が認知できないものなので、それを認知しようとする試みは無意味だと思います。※超音波を聞き取ろうとするような試みだと思います。

自分用ですが「ミスを少なくするような科学的な取り組み」を考えたいと思います。

自分のミスの起こりやすいパターンを記録する

人間の未来を最も確実に予測できるのは、いままでに起こったことです。ですので「自分の起こしやすいミス」も「過去に起こったミス」です。これを記録しておき、のちの後述するチェックリストに活かすことが大事になってきます。

チェックリストを使う

自分のミスのパターンやプログラミングをする上でのするべきタスクやチェック事項をリスト化しておき、紙に書いておく。

フローを書き出す

プログラミングの流れを整理するために大切だと思います。特に複雑な画面遷移が絡んでくるとどこがどう動いて連動しているかがわからなくなります。以前複雑な画面でこれを行ったら見通しが一気にわかりやすくなりました。ドキュメントのようなものではなく、メモ程度でも書いておくと全く違うので、なるべくこれを書く。

日を置いて確かめる

文章を作るときに、日をおいて確認するとミスを発見しやすいですが、同じようにプログラムも日を置いて、テストすると頭を冷やした状態で確認できますので、1日でも日を置くとよいでしょう。

コードの勉強をする

バグが生まれやすい場合、バグを起こしやすいようなコードを書いていることがあります。バグを起こしにくいコードを読んだり、正しいコードの本を読むようにしましょう。

画面のチェックは紙に印刷する

帳票や画面などは紙に印刷して、正しいかどうかをチェックしましょう。ディスプレイで目だけだとどうしても見落としが生まれます。

小さい単位で確認する

複雑なプログラムの場合、どうしても処理が長くなります。小さい単位に分割して、確認しやすくしましょう。また日常でおこなう作業もできるだけ小さく分割すると行動がしやすくなります。

テストツールを導入する

テストコードを書いたり画面テストを取り入れてみましょう。ただし完ぺきにやろうとすると、労力がかかりすぎ、本末転倒になります。部分的に、できるところから、本末転倒にならないように行うことが大切です。

システム的なチェックを行う

以前いた学習塾で請求書の金額を確認するときに、2人で取り組み、片方がコンピューターの金額を、もう一人がそれを聞いて明細の金額が正しいかをチェックする、ということを行っておりました。このような確認方法だとエラーが起こりにくくなります。

気を付ける、のではなくてこのようなシステム的なチェックを行うことが大切だと思います。

上記の中で実行しやすいものを選び、改善状態を記録する

上記を全てやろうとすると機能不全を起こしたり、労力がかかりすぎます。できそうなものから少しずつやり、その改善状態を記録していき、習慣にしていくことが大切です。

-プログラミング全般
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

コードの見た目について

リーダブルコード4章。コードの見た目について。 自分は結構注意されますね。多いパターンとしては空白の位置などがいい加減だったり、今はありませんが、以前はコードの末尾にスペースを空けてセミコロンをうつ変 …

no image

Eclipseのシンタックスハイライト

先日PCがクラッシュした時にEclipseを入れなおしたんですが、普段あまり意識せずに使っていたのでhtmlのシンタックスハイライトをだすためだけに2時間ぐらい費やしました・・・自戒の意味も込めてメモ …

no image

短いコードを書く

私が普段コードを書くときに考えていることは常にいかに短くかけるか、ということといかにバグを生み出さないかということです。 基本的にはできるだけ、短くシンプルに書くようにしています。 そうすることであと …

no image

コレクションの頻出処理に関して

PHPでコレクションを使っていますが、慣れると本当に便利ですね・・・まあforeachとかでグリグリやってもいいのですが、無駄にコードが長くなります。 自分がコレクションでよく使う再頻出のメソッドなど …

no image

命名規則について その2

リーダブルコードネタ第3段。 前回のエントリーに引き続き、名称の大切さについて Contents1 あいまいな名前はNG!1.1 限界値はmaxかminを使う1.2 範囲を指定するときはfirstとl …