我不會(huì)說(shuō)實(shí)踐會(huì)產(chǎn)生更好的代碼。可見(jiàn)性修飾符只會(huì)分散您對(duì)手頭任務(wù)的注意力,并且作為副作用迫使您的界面按您的意愿使用。一般來(lái)說(shuō),強(qiáng)制使用可見(jiàn)性可以防止程序員在沒(méi)有正確閱讀文檔的情況下把事情搞砸。
一個(gè)更好的解決方案是Python鼓勵(lì)的路線:您的類和變量應(yīng)該有很好的文檔化,并且它們的行為應(yīng)該清楚。應(yīng)該有消息來(lái)源。這是一種更可擴(kuò)展和更可靠的編寫(xiě)代碼的方法。
我在Python中的策略是:
- 只需寫(xiě)上那該死的東西,不要假設(shè)你的數(shù)據(jù)應(yīng)該如何被保護(hù)。這假設(shè)您編寫(xiě)是為了為您的問(wèn)題創(chuàng)建理想的接口。
- 對(duì)以下內(nèi)容使用前導(dǎo)下劃線
可能
不會(huì)在外部使用,也不是正常的“客戶端代碼”接口的一部分。 - 只對(duì)類內(nèi)純粹方便的東西使用雙下劃線,如果意外暴露會(huì)造成相當(dāng)大的損害。
最重要的是,一切都應(yīng)該清楚。如果其他人會(huì)使用它,就把它記錄下來(lái)。如果你想讓它在一年的時(shí)間里有用的話,就把它記錄下來(lái)。
順便說(shuō)一句,你實(shí)際上應(yīng)該受保護(hù)在這些其他語(yǔ)言中:您永遠(yuǎn)不知道您的類以后可能會(huì)被繼承,并且可能會(huì)被使用。最好只保護(hù)那些您確信不能或不應(yīng)該被外部代碼使用的變量。