creation漢字をローマ字・英語に変換します。変数名を作成するためのツールです。09:52想定される状況なのに例外を使用している場合は「条件判定による例外の置き換え」を検討します。「クーポンがある場合とない場合で割引価格を変更する」処理が以下のように定義されていたとします。0.8M;}見た目はまあまあ整っていますが、「クーポンがある場合」という正常系の処理に例外を使用している個所が問題です。それでは「条件判定による例外の置き換え」のリファクタリングを適用してみましょう。else」の条件判定で判断しそれぞれ割引価格取得用のメソッドを呼び分けています。07:48引数の特定の値に応じて、実行されるコードが分岐する場合は「明示的なメソッド群による引数の置き換え」を検討します。割引価格のルールが「クーポンがある場合は定価の8割、ない場合は9割で販売する」だったとします。上記を踏まえ「割引価格を取得する」メソッドを以下のように定義しました。0.8M;}このリファクタリングを行うと、条件分岐が呼び出し元に必要になります。「条件分岐をどこで行うのが適切か?」を考慮したうえで適用してください。14:21メソッドがエラーコードを返すため、正常系と異常系が分かりづらい場合は「例外によるエラーコードの置き換え」を検討します。「面積を取得する」メソッドが以下のように定義されていたとします。height;}どうやら幅または高さに0以下を指定した場合は、エラーコードである「0」を返しているようですが、これが正常値なのか異常値なのか判断に迷うところですよね?「幅または高さに0以下が指定された場合は異常」を明確にするため、「例外によるエラーコードの置き換え」を行います。height;}呼び出し元で例外を処理する必要はありますが、正常系と異常系を切り分けることができました。09:39引数に対して代入している個所があったら、代わりに一時変数を使用します。「四角を描画する」メソッドが以下のように定義されていたとします。0;}・・・}どうやらx座標とy座標には0以上の値を指定しなければならないようで、0より小さい値が指定された場合に0へ補正する処理が入っています。0を「パラメータへ直接代入」している個所が問題です。上級プログラマーがパラメータの「値渡し」と「参照渡し」を適切に切り分け、可読性を考慮して行っている場合もありますが、たいていは「面倒くさい」という理由で行われたバグの源です。後の修正でこのようなコードに出会った場合、プログラマーは「値渡し」か「参照渡し」かを確認し、自分が行う修正が呼び出し元まで波及するかまで調べなければなりません。これではプログラマーがどんなに優秀でも保守性が向上しませんので、「パラメータへの代入の除去」のリファクタリングを行いましょう。この例だと三項演算子を使うとキレイにまとめられそうです。y;・・・}ここで重要なことは三項演算子を使ったことではなく、「値を補正するため、一時変数を使用した」ことですので、お間違いのないようよろしくお願いします。16:21「ガード節による入れ子条件記述の置き換え」のリファクタリングは、異常系のチェックを先に行い、returnや例外をスローすることで正常系の処理を単純化できますが、元のソースのつくりによっては非常にやりづらいリファクタリングです。「年齢20歳以上、30歳未満の場合のみ登録する」といった処理があったとします。・・・}}このくらい単純な処理であれば正常系のif文だけでもいいかもしれませんが、たいていは複合条件になりますので、ここはキチンとガード節を作りましょう。簡単に申し上げましたが、正常系のif文から異常系のガード節を作成するのは難しい場合があります。ここで有効なのが「ド・モルガンの法則」です。手順としては「正常系を否定すれば異常系のガード節になる」ので、ソースを以下のように改修します。・・・}これでは条件が複雑になっただけですので、ここに「ド・モルガンの法則」を適用します。正常系の処理}となります。ド・モルガンの法則を知っていれば、業務ロジックが分からなくてもガード節は作れます。最初は難しいかも知れませんが、反復しているうちに使いこなせるようになりますので、がんばって覚えてください。10:59条件分岐全てに同じコードが存在する場合は、そのコードを条件分岐の外に移動します。「価格を登録する」というメソッドが以下のように定義されていたとします。登録するRegister();}}ソースを見ると、登録するための「Register」メソッドが条件分岐全てに存在しますので、条件分岐の外へ移動します。登録するRegister();}こうしておけば条件により分岐する処理と、条件によらず必ず実行しなければならない処理が明確になりますので、保守性が向上します。07:21メソッドに渡す引数が足りない場合は追加します。「消費税を取得する」メソッドが以下のように定義されていたとします。0.08M;}これは内部で一時変数を使用していますので、なくすためのリファクタリングをしなければなりません。今回は「引数の追加」で対応します。taxRate;}ただし、やみくもに引数を追加してはいけません。引数が増えすぎるようなら「引数オブジェクトの導入」を検討してください。07:07メソッドに渡した引数が使われていない場合は削除します。「setメソッドの削除」で作成した絵本クラスに、「消費税を取得する」メソッドを追加したとします。TAX_RATE;}消費税を取得する「GetConsumptionTax」メソッドに税率「taxRate」の引数を渡していますが、消費税の計算式では絵本クラスで宣言した定数の税率を使用しているようです。この場合、引数の税率は無意味なので削除します。16:03初期化の際に設定し、その後変更してはいけないフィールドにsetメソッドや、プロパティのsetアクセサが定義されている場合は削除します。「絵本」を管理するためのクラスを作成し、コンストラクタで単価を設定したとします。unitPrice;}}その後、他のクラスで絵本の単価を知る必要があり、単価プロパティを用意したとします。value;}}思わずsetアクセサも定義してしまいましたが、これでは絵本クラスの外から単価を編集できてしまいます。これはマズイので「setメソッドの削除」を用いてsetアクセサを削除しましょう。this._unitPrice;}}こうしておけば絵本クラスの外から単価が編集されることがなくなります。絵本クラス内での単価変更を許可する場合は、setアクセサのアクセス属性で制御します。value;}}上記例では、単価を絵本クラスの外に公開しますが、設定は絵本クラスのみが行えます。21:11クラス内部で使用するメソッドが「public」で宣言されている場合は「メソッドの隠蔽」を検討します。「売価を設定する」メソッドが「public」で宣言されていたとします。SetSellingPrice(){・・・}このメソッドを調べてみると、クラス内部でしか使用されていませんでした。その場合は「メソッドの隠蔽」を用いてアクセス属性を「private」に変更します。SetSellingPrice(){・・・}必要最低限のメソッドのみ公開することで、後からクラスを利用する人が、どのメソッドを呼び出せばよいのか分かりやすくなります。※メソッドが派生クラスで使用されている場合は、アクセス属性を「protected」にしてください。JAPANマイナンバーマイナンバー導入診断マイナンバー導入診断とは、中小企業のマイナンバー導入を支援するためのツールです。マイナンバー導入診断の使い方マイナンバー導入診断のマニュアルを作成しました。3.4.5MessizClipArabikiTOP。