和ChatGPT的首次合作:論單一職責原則

0 評論 2679 瀏覽 2 收藏 11 分鐘

在架構設計、產品設計以及組織管理中,單一職責原則都具有重要的應用價值,可以幫助我們更好地進行任務分配、責任劃分、崗位設置和角色分配等方面的工作。同時,也可以提高代碼的可維護性和可讀性,降低系統的耦合度,從而提高整個團隊的生產力和職業能力水平。該如何做好?一起來看看這篇文章。

今天剛在衛生間解決完個人問題出來,就聽老婆說:回去開燈。頓時一陣懵,大白天的人家都是別忘關燈,怎么到你這里成了別忘開燈了。老婆又連說了兩遍,我依然沒有反應過來。直到老婆說:就是排風扇打開,我才恍然大悟。因為裝修的時候出現失誤,衛生間的排風開關不好用,排風開關和衛生間的燈弄成一個了,導致排風就得開燈,開燈就得排風。

這就是一個開關兩個職能導致的混亂。這讓我想起在架構設計的一些基本原則中一條非常重要的原則:單一職責原則(Single Responsibility Principle,SRP)。

01 架構中的單一職責原則

在軟件系統架構設計中,單一職責原則是一個基礎原則,它強調一個組件或模塊只應該擁有一個單一的職責。這個原則可以使得架構設計更加清晰,使得組件之間的耦合更加清晰分離,從而帶來更好的可維護性和可拓展性。

例如,我們可以將一個復雜的業務邏輯劃分為多個模塊或組件,每個模塊或組件只負責一項職責。這樣可以使得每個模塊或組件更加專注和獨立,避免出現復雜的交叉依賴關系,提高代碼的可讀性和可維護性。

單一職責原則是實現高內聚、低耦合的指導方針,在很多代碼重構手法中都能找到它的存在,它是最簡單但又最難運用的原則,需要設計人員發現類的不同職責并將其分離,而發現類的多重職責需要設計人員具有較強的分析設計能力和相關重構經驗。

和ChatGPT的首次合作:論單一職責原則

02 產品中的單一職責原則

單一職責原則是軟件開發中重要的設計原則之一,它提倡將一個類或模塊的職責盡可能的單一化,從而使得類或模塊只負責一種功能。單一職責原則在產品設計中也是存在的。

首先,單一職責原則可應用于產品功能設計中。 在產品設計中,每個產品都必須具有一定的功能,而單一職責原則在這個過程中起到了關鍵作用。通過將產品功能進行細分,將不同的功能委托給不同的模塊,可以使得各個模塊之間的功能職責清晰且互不干擾。以智能音箱為例,它需要完成聽音樂,查詢天氣,設置鬧鐘等多種功能。如果將這些功能都放入一個模塊中實現,不僅難以管理和維護,而且不同功能之間的干擾會嚴重影響用戶體驗。因此,一個好的產品設計應該將不同的功能劃分為不同的模塊來實現單一職責原則。

其次,單一職責原則可以應用于產品組件設計中。 在產品設計過程中,設計師往往需要設計各種不同的組件,并且需要保證各個組件之間的兼容性。如果每個組件都有多種功能,會使得組件之間的邏輯關系變得復雜,難以維護和修改。因此,設計師需要將不同的功能拆分為不同的組件,并且保證每個組件只具有一種功能,這樣在后期的修改和維護中,就能夠更加方便和快捷。

最后,單一職責原則可以應用于產品界面設計中。 一個好的界面設計應該呈現出清晰的布局和設計,讓用戶可以更加方便和快捷的使用產品。在設計過程中,應該將不同的功能組織在對應的區域中,并且保證每個區域只具有一種功能。這樣不僅能夠方便用戶的使用,而且能夠使得界面更加簡潔和美觀,極大提升用戶體驗。

單一職責原則在產品設計中的應用不僅會使得產品的各個模塊之間的職責更加清晰,而且能夠使得產品更加方便、易用、易維護。因此,在產品設計中的單一職責原則應用是非常必要且重要的。

03 管理中的單一職責原則

在組織管理中,單一職責原則可以幫助我們更好地進行任務分配和責任劃分。每個人應該只承擔自己熟悉和能夠完成的任務,避免過度承擔任務導致工作質量下降、效率低下等問題。

例如,在一個軟件開發團隊中,每個開發人員應該只負責特定模塊或組件的開發,避免出現過度依賴一個人的情況,并且每個人都可以專注于自己的工作,提高整個團隊的生產效率和代碼質量。

另外,在職場組織管理中,單一職責原則也可以幫助我們更好地進行崗位設置和角色分配。每個崗位或角色應該只涉及自己的專業領域和職責范圍內的工作,從而提高組織的工作效率和管理效果。

在管理中,管理者可能出現兼職的情況,或者一人身兼數職。比如研發總監的崗位人員空缺了,產品總監兼職研發總監,如果我們不能根據場景或者任務清晰的實現角色切換的時候,往往就出現了混亂,導致設計產品時過度的考慮研發的資源和進度?;蛘唔椖拷桓兜倪^程中,隨意的添加或者變更的產品的需求。所以,崗位兼職應該是一種短期行為用于過渡,長期來看,還是需要清晰劃分職責,特別是有相互制衡的崗位一定要拆分為單一職責。

有一次在做技術評審時,針對大量設備對接的程序設計,對于設備對接適配器的調用,產品開發人員采用了根據寫死的設備編碼進行if-else的判斷實現不同設備的調用。但是問題來了,實際到了項目實施以及運維過程中,還會有新的設備加進來,我們如果要不停的修改核心產品中的if-else代碼,產品的穩定性就會變差,而且本來可以交由外部實施團隊來做的開發又只能回到產品研發團隊,這是不合理的。

之所以出現這種設計,其實就是現階段,產品開發人員同時兼職項目實施,當前所有適配的設備都是由他負責,所以沒有做產品和項目的拆分,沒有做擴展性的設計。這也是職責不單一導致的系統設計混亂!

當我提醒他,你做程序設計的時候,不要認為你就是最終做項目實施的人,你應該怎么做?你做項目實施的時候,你希望什么模式可以不通過修改產品就能解決?當我們職責無法實現單一的時候,我們應該從多維角色中跳出來,切換為單一職責去思考。

和ChatGPT的首次合作:論單一職責原則

總之,在架構設計、產品設計以及組織管理中,單一職責原則都具有重要的應用價值,可以幫助我們更好地進行任務分配、責任劃分、崗位設置和角色分配等方面的工作。同時,也可以提高代碼的可維護性和可讀性,降低系統的耦合度,從而提高整個團隊的生產力和職業能力水平。

你認為該文章內容質量如何?其實這是我第一次和ChatGPT一起協作寫的一篇文章,ChatGPT貢獻了超過一半的篇幅。ChatGPT在生成式AI上的卓越表現,讓我完成此文只用一個多小時的時間,感謝ChatGPT讓我有了更多休息的時間。

專欄作家

菜根老譚,微信公眾號:CGLT_TAN,人人都是產品經理專欄作家。經歷程序員、技術Leader、產品經理、研發Leader等多種崗位?,F負責某科技公司整體產品研發,擅長企業IT架構及互聯網產品架構。

本文原創發布于人人都是產品經理。未經許可,禁止轉載

題圖來自Unsplash,基于CC0協議.

該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發揮!