gpt4 book ai didi

oop - 编程对象总是语义(语言)意义上的对象吗?

转载 作者:行者123 更新时间:2023-12-05 01:09:00 25 4
gpt4 key购买 nike

我不是一个完全没有经验的程序员,但今天当我为一个方法寻找一个正确的名字时,我的头脑变得非常困惑。我正在编写游戏 Battleship我已经开始制作简化版的类(class)板,如下所示:

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)。或者这两种方法都可能吗?如果是这样,可以在我的代码中混合它们吗?

(我只是希望这个问题是有道理的。)

最佳答案

您可以将对象视为各种名词。

如果你在谈论 object 的文学定义, 作为宾格, the subject verbed the object不是,编程对象不必是那种对象。它也可以是一个主题。

关于oop - 编程对象总是语义(语言)意义上的对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16245443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com