我最習慣看到它的方式是使用類:
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
可讀性通常是成功項目中最重要的事情之一,所以是的,選擇第二種選擇。閱讀和推理更容易。 –