@namif017

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

引数のエラーチェックをするべきか否か

現在オセロのコンソールアプリを作成中です。
そのアプリの中にあるPlayerというクラスはコマを置くマスを選択するIPlayerSelectorというインターフェースを実装したオブジェクトを持っており、コマを置くPlaceというメソッドでIPlayerSelectorで選択したマスに駒を置き、挟まれたコマをひっくり返すという実装にしようと考えています。


IPlaceSelector
{
    ///コマを置くマスを選択。
    ///有効な値のみを返す実装をする予定
    (int x, int y) Select();
}

class Player
{
    readonly IPlaceSerector _placeSelector;

    public void Place()
    {
        (int x, int y) = _placeSelector.Select();

        ///x, yのマスに駒を置き挟まれた駒を裏返す処理
    }
}

ここからが本題です。
IPlaceSelectorのSelectで帰ってくるx,yが有効な値かどうか(範囲内の値であるか、また裏返すことの出来るコマは存在するか等)をチェックするロジックはPlayerのPlaceの中に必要でしょうか。それとも無くても大丈夫でしょうか。
勿論あった方が親切だとは思うのですが、その辺の判定も含めてIPlaceSelecterの仕事だと思うのです。
エラーチェックは何処まで念入りにやるべきなのでしょうか。

0 likes

2Answer

チェックするロジックはPlayerのPlaceの中に必要でしょうか。

そういうのは結局状況とか考え方によるところが大きいので何とも言えません。
相手側がAIなのかもう一人のユーザーなのか知りませんが、
どっちにしても相手側にも同じような処理が必要ですから共通で使えるようにそれ用のメソッドを作ったほうがいいです。
Playerクラスが自分側だけで相手側は別クラスという実装をするつもりならIPlaceSelecterのほうがいいでしょう。

エラーチェックは何処まで念入りにやるべきなのでしょうか。

ユーザー入力する情報のエラーチェックはそれが不正だろうと正当だろうと
どんな情報が入って来るか分かったものではありませんから可能な限り徹底的にするべきです。

0Like

Your answer might help someone💌