4

私は完全に経験の浅いプログラマーではありませんが、今日、メソッドの適切な名前を考えていたときに頭が混乱しました。私はゲームBattleshipをプログラミングしていましたが、単純化されたバージョンが次のようになるクラス Board を作成することから始めました。

class Board:

    SHIP_MISS = 0
    SHIP_HIT = 1
    SHIP_DEAD = 2

    def __init__(self):
        self.ships = [
            [(1,1), (1,2)],
            [(5,6), (5,7), (5,8)],
        ]

    def hit(self, target):
        """ 
        Find out if any ship has been hit or has been sunk and 
        return an appropriate value (one of SHIP_MISS, SHIP_HIT, SHIP_DEAD)
        """

コードの後半で、ユーザー (ショット) から入力座標を読み取り、次のように hit メソッドを呼び出します。

# testing if Board works
board = Board()
result = board.hit(coords)
print result

今、私は を見て本当に立ち往生しましたboard.hit(coords)hitがそのメソッドに本当に適した名前なのか疑問に思い始めました。私は次のように考えていprocess_hitました。 ?」どこからともなく頭の中が大混乱。

このことを考慮:

 dog.bark()

何がdogありますか?吠えの対象ですか?または吠える対象(意味不明ですよね?)。

しかし、これは OOP の典型的な例です:

 bankAccount.deposit(50)

bankAccount言語感覚には何がありますか?預金の対象でしょうか?というのが銀行口座の一般的な考え方です。それとも、50 ドルを自分自身に入金することになっていることを意味するサブジェクトですか。

私の質問は、プログラム オブジェクトを言語 (セマンティック) の意味でオブジェクトとして考えるべきか、それともサブジェクトとして扱い、それに応じてすべてのメソッドに名前を付けるべきか (私の例process_hitではなく) です。hitそれとも両方のアプローチが可能ですか?もしそうなら、それらを私のコードに混ぜても大丈夫ですか?

(この質問が理にかなっていることを願っています。)

4

2 に答える 2