和ChatGPT的首次合作:論單一職責(zé)原則

0 評(píng)論 2767 瀏覽 2 收藏 11 分鐘

在架構(gòu)設(shè)計(jì)、產(chǎn)品設(shè)計(jì)以及組織管理中,單一職責(zé)原則都具有重要的應(yīng)用價(jià)值,可以幫助我們更好地進(jìn)行任務(wù)分配、責(zé)任劃分、崗位設(shè)置和角色分配等方面的工作。同時(shí),也可以提高代碼的可維護(hù)性和可讀性,降低系統(tǒng)的耦合度,從而提高整個(gè)團(tuán)隊(duì)的生產(chǎn)力和職業(yè)能力水平。該如何做好?一起來(lái)看看這篇文章。

今天剛在衛(wèi)生間解決完個(gè)人問(wèn)題出來(lái),就聽(tīng)老婆說(shuō):回去開(kāi)燈。頓時(shí)一陣懵,大白天的人家都是別忘關(guān)燈,怎么到你這里成了別忘開(kāi)燈了。老婆又連說(shuō)了兩遍,我依然沒(méi)有反應(yīng)過(guò)來(lái)。直到老婆說(shuō):就是排風(fēng)扇打開(kāi),我才恍然大悟。因?yàn)檠b修的時(shí)候出現(xiàn)失誤,衛(wèi)生間的排風(fēng)開(kāi)關(guān)不好用,排風(fēng)開(kāi)關(guān)和衛(wèi)生間的燈弄成一個(gè)了,導(dǎo)致排風(fēng)就得開(kāi)燈,開(kāi)燈就得排風(fēng)。

這就是一個(gè)開(kāi)關(guān)兩個(gè)職能導(dǎo)致的混亂。這讓我想起在架構(gòu)設(shè)計(jì)的一些基本原則中一條非常重要的原則:?jiǎn)我宦氊?zé)原則(Single Responsibility Principle,SRP)。

01 架構(gòu)中的單一職責(zé)原則

在軟件系統(tǒng)架構(gòu)設(shè)計(jì)中,單一職責(zé)原則是一個(gè)基礎(chǔ)原則,它強(qiáng)調(diào)一個(gè)組件或模塊只應(yīng)該擁有一個(gè)單一的職責(zé)。這個(gè)原則可以使得架構(gòu)設(shè)計(jì)更加清晰,使得組件之間的耦合更加清晰分離,從而帶來(lái)更好的可維護(hù)性和可拓展性。

例如,我們可以將一個(gè)復(fù)雜的業(yè)務(wù)邏輯劃分為多個(gè)模塊或組件,每個(gè)模塊或組件只負(fù)責(zé)一項(xiàng)職責(zé)。這樣可以使得每個(gè)模塊或組件更加專(zhuān)注和獨(dú)立,避免出現(xiàn)復(fù)雜的交叉依賴(lài)關(guān)系,提高代碼的可讀性和可維護(hù)性。

單一職責(zé)原則是實(shí)現(xiàn)高內(nèi)聚、低耦合的指導(dǎo)方針,在很多代碼重構(gòu)手法中都能找到它的存在,它是最簡(jiǎn)單但又最難運(yùn)用的原則,需要設(shè)計(jì)人員發(fā)現(xiàn)類(lèi)的不同職責(zé)并將其分離,而發(fā)現(xiàn)類(lèi)的多重職責(zé)需要設(shè)計(jì)人員具有較強(qiáng)的分析設(shè)計(jì)能力和相關(guān)重構(gòu)經(jīng)驗(yàn)。

和ChatGPT的首次合作:論單一職責(zé)原則

02 產(chǎn)品中的單一職責(zé)原則

單一職責(zé)原則是軟件開(kāi)發(fā)中重要的設(shè)計(jì)原則之一,它提倡將一個(gè)類(lèi)或模塊的職責(zé)盡可能的單一化,從而使得類(lèi)或模塊只負(fù)責(zé)一種功能。單一職責(zé)原則在產(chǎn)品設(shè)計(jì)中也是存在的。

首先,單一職責(zé)原則可應(yīng)用于產(chǎn)品功能設(shè)計(jì)中。 在產(chǎn)品設(shè)計(jì)中,每個(gè)產(chǎn)品都必須具有一定的功能,而單一職責(zé)原則在這個(gè)過(guò)程中起到了關(guān)鍵作用。通過(guò)將產(chǎn)品功能進(jìn)行細(xì)分,將不同的功能委托給不同的模塊,可以使得各個(gè)模塊之間的功能職責(zé)清晰且互不干擾。以智能音箱為例,它需要完成聽(tīng)音樂(lè),查詢(xún)天氣,設(shè)置鬧鐘等多種功能。如果將這些功能都放入一個(gè)模塊中實(shí)現(xiàn),不僅難以管理和維護(hù),而且不同功能之間的干擾會(huì)嚴(yán)重影響用戶(hù)體驗(yàn)。因此,一個(gè)好的產(chǎn)品設(shè)計(jì)應(yīng)該將不同的功能劃分為不同的模塊來(lái)實(shí)現(xiàn)單一職責(zé)原則。

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

最后,單一職責(zé)原則可以應(yīng)用于產(chǎn)品界面設(shè)計(jì)中。 一個(gè)好的界面設(shè)計(jì)應(yīng)該呈現(xiàn)出清晰的布局和設(shè)計(jì),讓用戶(hù)可以更加方便和快捷的使用產(chǎn)品。在設(shè)計(jì)過(guò)程中,應(yīng)該將不同的功能組織在對(duì)應(yīng)的區(qū)域中,并且保證每個(gè)區(qū)域只具有一種功能。這樣不僅能夠方便用戶(hù)的使用,而且能夠使得界面更加簡(jiǎn)潔和美觀(guān),極大提升用戶(hù)體驗(yàn)。

單一職責(zé)原則在產(chǎn)品設(shè)計(jì)中的應(yīng)用不僅會(huì)使得產(chǎn)品的各個(gè)模塊之間的職責(zé)更加清晰,而且能夠使得產(chǎn)品更加方便、易用、易維護(hù)。因此,在產(chǎn)品設(shè)計(jì)中的單一職責(zé)原則應(yīng)用是非常必要且重要的。

03 管理中的單一職責(zé)原則

在組織管理中,單一職責(zé)原則可以幫助我們更好地進(jìn)行任務(wù)分配和責(zé)任劃分。每個(gè)人應(yīng)該只承擔(dān)自己熟悉和能夠完成的任務(wù),避免過(guò)度承擔(dān)任務(wù)導(dǎo)致工作質(zhì)量下降、效率低下等問(wèn)題。

例如,在一個(gè)軟件開(kāi)發(fā)團(tuán)隊(duì)中,每個(gè)開(kāi)發(fā)人員應(yīng)該只負(fù)責(zé)特定模塊或組件的開(kāi)發(fā),避免出現(xiàn)過(guò)度依賴(lài)一個(gè)人的情況,并且每個(gè)人都可以專(zhuān)注于自己的工作,提高整個(gè)團(tuán)隊(duì)的生產(chǎn)效率和代碼質(zhì)量。

另外,在職場(chǎng)組織管理中,單一職責(zé)原則也可以幫助我們更好地進(jìn)行崗位設(shè)置和角色分配。每個(gè)崗位或角色應(yīng)該只涉及自己的專(zhuān)業(yè)領(lǐng)域和職責(zé)范圍內(nèi)的工作,從而提高組織的工作效率和管理效果。

在管理中,管理者可能出現(xiàn)兼職的情況,或者一人身兼數(shù)職。比如研發(fā)總監(jiān)的崗位人員空缺了,產(chǎn)品總監(jiān)兼職研發(fā)總監(jiān),如果我們不能根據(jù)場(chǎng)景或者任務(wù)清晰的實(shí)現(xiàn)角色切換的時(shí)候,往往就出現(xiàn)了混亂,導(dǎo)致設(shè)計(jì)產(chǎn)品時(shí)過(guò)度的考慮研發(fā)的資源和進(jìn)度?;蛘唔?xiàng)目交付的過(guò)程中,隨意的添加或者變更的產(chǎn)品的需求。所以,崗位兼職應(yīng)該是一種短期行為用于過(guò)渡,長(zhǎng)期來(lái)看,還是需要清晰劃分職責(zé),特別是有相互制衡的崗位一定要拆分為單一職責(zé)。

有一次在做技術(shù)評(píng)審時(shí),針對(duì)大量設(shè)備對(duì)接的程序設(shè)計(jì),對(duì)于設(shè)備對(duì)接適配器的調(diào)用,產(chǎn)品開(kāi)發(fā)人員采用了根據(jù)寫(xiě)死的設(shè)備編碼進(jìn)行if-else的判斷實(shí)現(xiàn)不同設(shè)備的調(diào)用。但是問(wèn)題來(lái)了,實(shí)際到了項(xiàng)目實(shí)施以及運(yùn)維過(guò)程中,還會(huì)有新的設(shè)備加進(jìn)來(lái),我們?nèi)绻煌5男薷暮诵漠a(chǎn)品中的if-else代碼,產(chǎn)品的穩(wěn)定性就會(huì)變差,而且本來(lái)可以交由外部實(shí)施團(tuán)隊(duì)來(lái)做的開(kāi)發(fā)又只能回到產(chǎn)品研發(fā)團(tuán)隊(duì),這是不合理的。

之所以出現(xiàn)這種設(shè)計(jì),其實(shí)就是現(xiàn)階段,產(chǎn)品開(kāi)發(fā)人員同時(shí)兼職項(xiàng)目實(shí)施,當(dāng)前所有適配的設(shè)備都是由他負(fù)責(zé),所以沒(méi)有做產(chǎn)品和項(xiàng)目的拆分,沒(méi)有做擴(kuò)展性的設(shè)計(jì)。這也是職責(zé)不單一導(dǎo)致的系統(tǒng)設(shè)計(jì)混亂!

當(dāng)我提醒他,你做程序設(shè)計(jì)的時(shí)候,不要認(rèn)為你就是最終做項(xiàng)目實(shí)施的人,你應(yīng)該怎么做?你做項(xiàng)目實(shí)施的時(shí)候,你希望什么模式可以不通過(guò)修改產(chǎn)品就能解決?當(dāng)我們職責(zé)無(wú)法實(shí)現(xiàn)單一的時(shí)候,我們應(yīng)該從多維角色中跳出來(lái),切換為單一職責(zé)去思考。

和ChatGPT的首次合作:論單一職責(zé)原則

總之,在架構(gòu)設(shè)計(jì)、產(chǎn)品設(shè)計(jì)以及組織管理中,單一職責(zé)原則都具有重要的應(yīng)用價(jià)值,可以幫助我們更好地進(jìn)行任務(wù)分配、責(zé)任劃分、崗位設(shè)置和角色分配等方面的工作。同時(shí),也可以提高代碼的可維護(hù)性和可讀性,降低系統(tǒng)的耦合度,從而提高整個(gè)團(tuán)隊(duì)的生產(chǎn)力和職業(yè)能力水平。

你認(rèn)為該文章內(nèi)容質(zhì)量如何?其實(shí)這是我第一次和ChatGPT一起協(xié)作寫(xiě)的一篇文章,ChatGPT貢獻(xiàn)了超過(guò)一半的篇幅。ChatGPT在生成式AI上的卓越表現(xiàn),讓我完成此文只用一個(gè)多小時(shí)的時(shí)間,感謝ChatGPT讓我有了更多休息的時(shí)間。

專(zhuān)欄作家

菜根老譚,微信公眾號(hào):CGLT_TAN,人人都是產(chǎn)品經(jīng)理專(zhuān)欄作家。經(jīng)歷程序員、技術(shù)Leader、產(chǎn)品經(jīng)理、研發(fā)Leader等多種崗位?,F(xiàn)負(fù)責(zé)某科技公司整體產(chǎn)品研發(fā),擅長(zhǎng)企業(yè)IT架構(gòu)及互聯(lián)網(wǎng)產(chǎn)品架構(gòu)。

本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

題圖來(lái)自Unsplash,基于CC0協(xié)議.

該文觀(guān)點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 目前還沒(méi)評(píng)論,等你發(fā)揮!