在Java中,當我有簡單的模型/ pojos時,我使用getters/setters。當你這樣做時,我發現代碼變得自我記錄。調用getName()將返回一個名稱,我不需要關心它是如何映射到某個數據庫的,等等。不使用getter和setter的文檔
使用語言時出現問題,getter和setter開始感覺笨重,就像在Python中一樣,我經常聽到人們說他們不好。例如,有一段時間,我有一個PHP項目,其中一些數據只是從數據庫查詢,而列值則映射到objects/dictionaries。我發現這樣的代碼很難閱讀,你不能真正閱讀代碼,閱讀代碼,然後你發現數據從數據庫中獲取,現在你必須查看數據庫無時無刻地瞭解它。當你所能做的只是看看班級的定義,並知道那裏不會有任何無證的魔術鑰匙。
所以我的問題是你們如何在沒有getter和setter的情況下編寫代碼?
你似乎混淆了這裏的東西。如果不需要,建議不要在Python中使用getter和setter,這意味着您不應該在getter和setter中包含普通實例屬性 - 這在Python中不是必需的,因爲如果您決定更改此屬性,則可以使用屬性來保持向後兼容性實例佈局。 –
所以你說'getName()'是自我記錄,但包含名稱的'instance.name'不是? –
當然,當你看到它,但如果你沒有看到類定義的值?通過查看代碼,您可以假定它始終存在,它不是爲程序的這部分添加的一些魔術鍵/屬性? – Guu