ソフトウェアアーキテクチャ博物館AtMuseum
設計技術FAQ


第1話 ソフトウェアの設計について考える

設計について考える 皆さんは、ソフトウェアの設計と聞くと何を思い浮かべられるでしょうか。筆者の経験で恐縮ですが、開発現場ではコーディングが重視され、既存資産への追加・修正が仕事になっていることと相まって、設計で何をすれば […]

第2話 アーキテクチャ設計した方がよいの?

委託元が要求しないので、アーキテクチャ設計をしなくてもよい? システムの全体構造を設計するアーキテクチャ設計は、システム開発に不可欠な工程です。依頼元が要求しないのであれば、出さなくてもよいだけです。 複数の開発者が参加 […]

第3話 秘伝のたれ

症状 別名 現象 1 一筆書き モンスター関数 ひとつの関数やファイルが長い作った人にしか分からない(作った人も?) 2 クローン 切り貼りプログラミング 同じコードが断片的に点在している修正漏れが発生する(ここにもあっ […]

第4話 delay関数でタイミング合わせ

delayで同期処理をしない、ことを推奨します。 何かの動作の完了を待つような処理を同期処理と言います。delay関数による同期処理の問題を以下に説明します。 delay関数の中身は、ループを回ってCPUの実行時間を消費 […]

FAQ01:delayで待ち合わせしてはいけないのですか?

A. delayで同期処理をしない、ことを推奨します。 何かの動作の完了を待つような処理を同期処理と言います。delay関数による同期処理の問題を以下に説明します。 delay関数の中身は、ループを回ってCPUの実行時間 […]

FAQ02:関数の引数は、必ず入り口でチェックしなければいけないのでしょうか?

A. 自システム外から来る引数はチェックした方がよいですが、自システム内の関数呼び出しはチェックしなくても良いでしょう。 防衛的プログラミングということで、盲目的に、関数の入り口で引数チェックをしているコードを見ることが […]

FAQ03:画面単位のプログラムで、画面の上から順に作られていて、ロジックとデータが混在していて、抽象度がばらばらな1000行を超えるコードを、どのように理解したらよいでしょか?

A.まずはデータ構造を把握しましょう。その際にデータ辞書で定義することで、抽象度の違いも明白になるはずです。 ロジックを追いかけても、プログラムの本質は掴めないでしょう。 データ構造を定義してみましょう。複数のデータをひ […]

FAQ04:NULLチェックするif文が随所にあるのですが、そういうものなのでしょうか?

A.そういうものではありません。冗長なNULLチェックは削除しましょう。 「ないインスタンス」にアクセスして不具合を出したので、その対処療法かと。(そして、その書き方を盲目的に守る) 全ての引数チェックは「過剰な防衛的プ […]