我最习惯看到它的方式是使用类:
class Stock:
def add(self, quantity):
self.stock_quantity += quantity
def remove(self, quantity):
self.stock_quantity -= quantity
或者,如果逻辑是相同的,你可以只做出改变方法:
def stock_change(self, delta):
self.stock_quantity += delta
并将负值传递给它以产生负面变化。
一个人认为你要非常小心,虽然确保你有一个干净的api。作为程序不同部分之间的边界,通常是程序中最难改变的部分。一般来说,你想要一个功能只做一件事。这被称为单一责任原则。在你继续之前,谷歌“如何设计一个API”并阅读人们对它的想法。许多这些意见都是以来得难得的经验而建立的。
它最终取决于你想要什么。你比我更了解你的应用程序。
我不认为自己是专家,但我确实有意见。国防部,如果这是太基于观点/没有帮助,请编辑/删除它。
如果股票是您的代码中相对不重要的一小部分,我可能会使用stock_change
方法(也许将其重命名为描述股票线性变化的内容,所以稍后如果您想说,增加一个股票10%,这也是一个“stock_change”,你会有更少的模糊函数名称)。我建议这样做的原因是因为它的代码较少,如果需要的话,您可以稍后将其重构为第二种方法(假设您尚未将其分发给客户)。谷歌“YAGNI”。
如果你正在用股票做很多事情,那最好是把它做成自己的类。然后,您可以对它进行子类化,将其他类似的“粗壮”功能分组给它,等等。谷歌“为什么是OOP”。
除非您有很好的理由,否则我会避免将该字符串用作API的一部分。作为一个API参数的字符串很难重构 - 它们已经被用于用户输入和输出(可能还有其他我现在没有考虑的东西),许多程序员一直在努力去理解哪些字符串是哪个字符串。另外,请记住任何字符串都可以传递给您的api,并且您必须每次都过滤它。他们打字很弱。相反,如果你想使用一个具有大多数(全部?)字符串优点的方法,但仍然能够限制传递给你函数的东西的数量,请考虑enums。
总之,上述每种方法都有优点和缺点。我可能还没有考虑更多的方法(我不认为自己是这方面的专家),但你最了解你的问题域,即使你这次错了,你会下次能够从中学习。只要继续阅读,不断重构,你就会知道一个好的API和一个糟糕的API。
来源
2017-07-13 19:40:50
Ben
我可能会去为两个单独的功能的可读性。我认为使用stock_remove(4)或stock_add(4)更容易,然后做stock_amend(“remove”,4)和stock_amend(“add”,4)。但对我来说,主要是为了可读性。 – gavsta707
可读性通常是成功项目中最重要的事情之一,所以是的,选择第二种选择。阅读和推理更容易。 –