自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

軟件開發(fā)中的“瑞士軍刀綜合征”

開發(fā) 項(xiàng)目管理
任何一個(gè)公司、項(xiàng)目經(jīng)理、開發(fā)人員,或者是客戶都應(yīng)當(dāng)遵守這一邏輯。我們傾向于認(rèn)為,擁有更多或者實(shí)現(xiàn)更多就等同于更好、更有價(jià)值。軟件應(yīng)該是優(yōu)雅的,優(yōu)雅的代碼就是簡(jiǎn)潔地完成需求的代碼。因此,我們開發(fā)人員有責(zé)任確保我們所寫的每段代碼都盡可能優(yōu)雅簡(jiǎn)潔。

如果大家認(rèn)為這篇文章更多是在噴,我先說抱歉。“瑞士軍刀綜合征”的想法是起源于我和項(xiàng)目經(jīng)理、客戶、甚至其他開發(fā)者打交道的過程中產(chǎn)生的沮喪感,他們都以一種狹隘特殊的方式思考問題。我稱之為“瑞士軍刀綜合征”。

瑞士軍刀

[[113562]]

“瑞士軍刀”這個(gè)詞通常用于描述一種可以在各種情況下使用的多種工具的集合體。

雖然這樣的組合可能很有用,但同樣要注意一些風(fēng)險(xiǎn)。一個(gè)有太多活動(dòng)部件的工具,可能最后是完全無(wú)用的!什么都能做的工具,就是什么都做不好的工具。

就我的經(jīng)驗(yàn)來(lái)看,同樣的問題也出現(xiàn)在軟件上。大多數(shù)時(shí)候,開發(fā)人員僅僅因?yàn)?ldquo;這很酷!”就把一些功能或者一段代碼放進(jìn)工程里;項(xiàng)目經(jīng)理們會(huì)認(rèn)為這樣或那樣的特性可以增加價(jià)值,并且在項(xiàng)目中期修改需求;消費(fèi)者因?yàn)槁犝f或看到某個(gè)性能對(duì)他們“至關(guān)重要”而期望額外功能或特性。

這種“瑞士軍刀綜合征”可以有很多形式:需求范圍的蔓延,過早的優(yōu)化,等等。但是問題的根源在于,我們是如何理解并評(píng)判軟件、工作量及其附加價(jià)值的價(jià)值:

更多功能

=

更大價(jià)值

現(xiàn)實(shí)中,以及絕大多數(shù)情況,事實(shí)恰恰相反。一段代碼或者一個(gè)軟件越復(fù)雜,它提供的價(jià)值就越少。一個(gè)個(gè)人的例子就可以簡(jiǎn)單說明這一概念,Demac Media內(nèi)部使用的樞紐控制臺(tái)。

本來(lái)這個(gè)應(yīng)用很簡(jiǎn)單:我們需要一個(gè)(1)查看所有分配給小組的任務(wù)和(2)通過本周或兩周的底線來(lái)過濾任務(wù)——簡(jiǎn)單來(lái)講,就是一個(gè)帶有過濾功能的任務(wù)整合器。

我用了一周時(shí)間,寫出了基本的功能。在下周周一時(shí),我給我們團(tuán)隊(duì)的項(xiàng)目經(jīng)理展示的時(shí)候,他認(rèn)為這個(gè)應(yīng)用不錯(cuò),很有用。

“……但是,如果……,將會(huì)更不錯(cuò)……”

于是瑞士軍刀綜合征開始了:這個(gè)工具要和另一個(gè)團(tuán)隊(duì)共同使用。在他們還沒有開始使用之前,我們就收到了一堆需要添加的新特性。突然間,我們有了很多遠(yuǎn)超出這個(gè)應(yīng)用最開始設(shè)計(jì)的需求。

 

明確目的

[[113563]]

軟件應(yīng)該是簡(jiǎn)潔的,只提供它應(yīng)該提供的功能。為了配合上面的軍刀,一段優(yōu)秀的代碼,就應(yīng)該像廚子的刀一樣。一個(gè)廚刀很簡(jiǎn)潔,有特定的功能。一個(gè)專業(yè)大廚會(huì)在不同情況下用不同的刀。同樣的思維方式也應(yīng)該應(yīng)用到代碼中。

只做一件事,并做好它。

我們發(fā)現(xiàn)軟件設(shè)計(jì)中也有同樣的原則,通常叫做單一功能原則:

……單一功能原則規(guī)定每個(gè)類都應(yīng)該有一個(gè)單一的功能,并且該功能應(yīng)該由這個(gè)類完全封裝起來(lái)。所有它的服務(wù)都應(yīng)該嚴(yán)密的和該功能平行。

總結(jié)

任何一個(gè)公司、項(xiàng)目經(jīng)理、開發(fā)人員,或者是客戶都應(yīng)當(dāng)遵守這一邏輯。我們傾向于認(rèn)為,擁有更多或者實(shí)現(xiàn)更多就等同于更好、更有價(jià)值。軟件應(yīng)該是優(yōu)雅的,優(yōu)雅的代碼就是簡(jiǎn)潔地完成需求的代碼。因此,我們開發(fā)人員有責(zé)任確保我們所寫的每段代碼都盡可能優(yōu)雅簡(jiǎn)潔。

特別感謝:

Mark Holmes – http://markholmes.io/

原文鏈接: coderoncode   翻譯: 伯樂在線 - TonyRideBike

譯文鏈接: http://blog.jobbole.com/68694/

責(zé)任編輯:林師授 來(lái)源: 伯樂在線
相關(guān)推薦

2014-09-26 14:30:41

2010-12-01 12:31:23

NetCat掃描端口

2009-07-21 14:16:18

Scalafor表達(dá)式

2020-07-02 09:21:40

Java 緩存開發(fā)

2013-04-11 10:51:27

2013-06-08 10:36:47

Linux命令行

2017-05-03 14:45:45

MySQL數(shù)據(jù)恢復(fù)

2011-08-01 09:43:08

PhoneGap 1.PhoneGap

2019-06-24 09:57:39

網(wǎng)絡(luò)工具調(diào)試

2011-10-18 14:11:17

Web開發(fā)

2022-02-15 10:15:13

Web網(wǎng)絡(luò)程序員

2019-06-27 17:00:09

nc命令 Linux

2021-09-05 18:30:59

Alpine容器Busybox

2023-04-27 07:06:09

Categraf夜鶯

2023-12-25 12:03:42

2024-04-02 10:28:13

WindowsDevToys開發(fā)

2025-03-03 09:20:00

VueUseVue.js前端

2021-12-28 09:55:40

UbuntuRescuezillaLinux

2015-09-28 09:46:31

ZooKeeper分布式系統(tǒng)瑞士軍刀

2017-04-21 09:42:18

4G5G物聯(lián)網(wǎng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)