[英]Is it possible to further embed best practices into programming languages?
例如,在c#中,訪問修飾符默認情況下實現信息隱藏(通過默認情況下為類和字段提供最嚴格的訪問權限)。
在ASP.NET中,您的網站中具有app_code和app_data作為“內置”庫。
ASP.NET MVC又邁出了一步,並“使”您使用MVC。
我不知道它在不同語言中的表現如何。
您是否認為諸如單一責任,強大的凝聚力,關注點分離等概念可以進一步嵌入到編程語言和技術中?
編輯:也許我應該問過-“您能想到一種使語言和框架泛濫的方法來嵌入這些概念嗎?”
我問的原因有兩個-首先是好奇心。 其次,我認為這個問題的答案可以成為有關如何實施這些概念的“經驗法則”。
謝謝。
我相信答案是否定的,因為好的設計和工程決策通常不能用純技術手段代替 。
但是,要說出技術可以在多大程度上推動程序員朝着,促進甚至實施好的設計方向發展,將更加困難。 我懷疑這里的答案取決於您正在尋找哪種“最佳實踐”。 語言規則可以比其他規則更好地執行一些最佳實踐:
例如,有一個普遍的觀念,即應優先考慮組成和聚合而不是繼承。 OO語言可以多種方式實施此操作,包括:
完全禁止繼承;
禁止一定深度的類層次結構(例如,您不能從已經是派生類的類派生,因此只能允許一個級別的繼承);
(如果您想知道上面的列表,我沒有發瘋:這個列表是假設的,我並不建議實際上應該采取任何這些措施。每個選項都有其明顯的缺點。)
其他通用的最佳實踐(實際上,我懷疑是最有用的最佳實踐),例如DRY(請勿重復),SRP(單一責任原則)等,可能不受該語言強制執行。
您是否認為諸如單一責任,強大的凝聚力,關注點分離等概念可以進一步嵌入到編程語言和技術中?
否。只有人的思想才能解決這個問題。
就像我一直說的那樣:“語言只能向您顯示路徑,如果您遵循它,那應該是您的選擇”
在這里,您作為程序員的技能可以有所作為。
除了幫助您完成工作,它幾乎是所有框架的工作。 檢查Ruby on Rails , Django , Java EE的功能,您將確切地看到我要說的內容。
您可能會發現它在以動態語言編寫的框架中更頻繁地實現,因為它們允許通過編寫DLS輕松擴展語言。
您是否認為諸如單一責任,強大的凝聚力,關注點分離等概念可以進一步嵌入到編程語言和技術中?
Eiffel編程語言是專門針對這些更籠統的概念而設計的編程語言的一個很好的例子。
我記得通過與顧問共享辦公室來開始工作。 我記得他給朋友打了個電話,問他“您能解釋Windows如何創建進程嗎?這里說它還創建線程,這與UNIX有何不同?”。 他喜歡“最佳實踐”之類的詞。
最好遠離強制執行它們的語言。
鼓勵->是的。
強制->不。
我在RoR和asp.net mvc中看到了幾個非常糟糕的資源。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.