2017-10-14 5 views
1

Say classAは、そのパラメータとしてクレジットカード番号を受け取ります。そのクレジットカード番号が存在するかどうかをチェックし、それをクラスBに渡して処理されます。安全性のために入力検証を冗長に行う必要がありますか?

クレームカード番号が有効であるかどうかを確認する必要があります。クレジットカード番号は、すでに有効であるクラスAのクレジットカード番号を取得しますか?

ClassBは近い将来他のクラスから再利用されません。

+1

は、ClassCがClassBメソッドを呼び出すとどうなりますか?これは防御プログラミングに関するものです。呼び出すメソッドの引数をチェックする必要がありますか?必ずしも。 CreditCard Validatationを実行する方法が1つあり、どのメソッドでも呼び出すことができます。 –

答えて

1

クラスBはクレジットカード番号が有効であるかどうかをチェックする必要があります。クレジットカード番号は、既にそれを検証したクラスAからクレジットカード番号を取得しますか?

可能であれば、高い結合力で低いコード結合を達成しようとするならば、明確な境界で各クラスとメソッドのタスクを分離する必要があります。

重複したジョブや半二重のジョブを実行する必要はありません。クラスごとに明確なジョブスコープを設定すると、各クラスが多少独立して動作することがあり、コードを再利用して他のクラスと連携させることさえ可能です。

あなたがクレジットカード番号を検証するためのルールをいつか修正する必要があるとすれば、クラスBの改訂を行う必要があります。最悪の場合、classAはclassCからclassZまで検証しているので、classAを使って作業するすべての人に変更を加えなければなりません。

一般的に、classAがその仕事をうまくやっていることを「信用」し、classBは自分の仕事に集中する必要があります。

関連する問題