Skip to content

💻📖对开å‘人员有用的定律ã€ç†è®ºã€åŽŸåˆ™å’Œæ¨¡å¼ã€‚(Laws, Theories, Principles and Patterns that developers will find useful.)

master
Go to file
Code

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Build Status

hacker-laws 的的中文翻译。

对开å‘人员有用的定律ã€ç†è®ºã€åŽŸåˆ™å’Œæ¨¡å¼ã€‚(Laws, Theories, Principles and Patterns that developers will find useful.)

为了方便阅读,维基百科增åŠ?了中文链接。英文链接表示 hacker-laws 项目尚未完æˆçš„主题。

中国�法访问维基百科说明

喜欢点 star ã€å…³æ³¨ç‚¹ watch ã€è´¡çŒ®ç‚¹ fork 。翻译错æ¼ä¹‹å¤„,欢迎指正ï¼

介ç»

å½“äººä»¬è°ˆè®ºå¼€å‘æ—¶ï¼Œä¼šèŠåˆ°è®¸å¤šå®šå¾‹ã€‚这个仓库收录了一些最常è§çš„定律。

â—: 这个仓库包å«å¯¹ä¸€äº›å®šå¾‹ã€åŽŸåˆ™ä»¥åŠæ¨¡å¼çš„è§£é‡Šï¼Œä½†ä¸æå€¡å…¶ä¸­ä»»ä½•ä¸€ä¸ªã€‚ 它们的应用始终存在ç€äº‰è®ºï¼Œå¹¶ä¸”很大程度上å–决于ä½?正在åšä»€ä¹ˆã€‚

定律

现在我们开始å§ï¼

90-9-1 法则 (90–9–1 Principle or 1% Rule)

90-9-1 法则表明,在诸如维基这æ?·çš„互è”网社区中,90% 的用户åªçœ‹å†…容并ä¸å‚与互动,9% 的用户会å‚ä¸Žè®¨è®ºï¼Œè€Œåªæœ‰ 1% 的用户会创é€?内容。

现实世界的例å­ï¼š

  • 2014 年,对四个å¥åº·çš„æ•°å­—社交网络进行的一项ç?”ç©¶å‘现,排åå‰ 1% 的人创é€?了 73% 的帖å­ï¼Œç´§éšå…¶åŽçš„ 9% å¹³å‡å? 25%,其余的 90% 的人平å‡å? 2%。 (å‚考)

å‚è§ï¼š

阿姆达尔定律 (Amdahl's Law)

阿姆达尔定律是一个显示计算任务潜在åŠ?速能力的公å¼ã€‚è¿™ç§èƒ½åŠ›å¯ä»¥é€šè¿‡å¢žåŠ?ç³»ç»Ÿèµ„æºæ¥å®žçŽ°ï¼Œé€šå¸¸ç”¨äºŽå¹¶è¡Œè®¡ç®—ä¸­ã€‚å®ƒå¯ä»¥é¢„测增åŠ?处ç†å™¨æ•°é‡çš„实际好处,然而增åŠ?处ç†å™¨æ•°é‡ä¼šå—到程åºå¹¶è¡Œæ€§çš„é™åˆ¶ã€‚

举例说明:如果程åºç”±ä¸¤éƒ¨åˆ†ç»„æˆï¼Œéƒ¨åˆ† A 必须由å•个处ç†å™¨æ‰§è¡Œï¼Œéƒ¨åˆ† B å¯ä»¥å¹¶è¡Œè¿è¡Œã€‚é‚£ä¹ˆå‘æ‰§è¡Œç¨‹åºçš„系统添åŠ?多个处ç†å™¨åªèƒ½èŽ·å¾—æœ‰é™çš„好处。它å¯ä»¥æžå¤§åœ°æå‡éƒ¨åˆ† B çš„è¿è¡Œé€Ÿåº¦ï¼Œä½†éƒ¨åˆ† A çš„è¿è¡Œé€Ÿåº¦å°†ä¿æŒä¸å˜ã€‚

下图展示了一些è¿è¡Œé€Ÿåº¦çš„æå‡æ½œèƒ½çš„例å­ï¼š

阿姆达尔定律

(å›¾ç‰‡æ¥æºï¼šBy Daniels220 at English Wikipedia, Creative Commons Attribution-Share Alike 3.0 Unported, https://en.wikipedia.org/wiki/File:AmdahlsLaw.svg)

å¯ä»¥çœ‹å‡ºï¼Œ50ï¼… 并行化的程åºåœ¨ä½¿ç”¨å¤§äºŽ 10 个处ç†å•元之åŽçš„速度æå‡æ”¶æ•ˆç”šå¾®ï¼Œè€Œ 95ï¼… 并行化的程åºåœ¨ä½¿ç”¨è¶…过一åƒä¸ªå¤„ç†å•元之åŽä»ç„¶å¯ä»¥æ˜¾è‘—æå‡é€Ÿåº¦ã€‚

éšç€æ‘©å°”å®šå¾‹å‡æ…¢ï¼Œå•个处ç†å™¨çš„速度增åŠ?缓慢,并行化是æé«˜æ€§èƒ½çš„关键。图形编程是一个æžå¥½çš„例å­ï¼Œçް代ç€è‰²å™¨å¯ä»¥å¹¶è¡Œæ¸²æŸ“å•个åƒç´?或片段。这也是现代显å¡é€šå¸¸å…·æœ‰æ•°åƒä¸ªå¤„ç†æ?¸å¿ƒï¼ˆGPU 或ç€è‰²å™¨å•元)的原å›?。

å‚è§ï¼š

�窗效应 (The Broken Windows Theory)

在ç?´çª—ç†è®ºä¸­è®¤ä¸ºï¼Œä¸€äº›æ˜Žæ˜¾çš„犯罪迹象(或缺ä¹çŽ¯ä¿æ„识)ä¼šå¯¼è‡´è¿›ä¸€æ­¥çš„ã€æ›´ä¸¥é‡çš„犯罪(或环境的进一步æ¶åŒ–)。

ç?´çª—ç†è®ºå·²åº”用于软件开å‘中,它表明劣质代ç?(或 Technical Debt)å¯èƒ½ä¼šå½±å“åŽç»­ä¼˜åŒ–的效率,从而进一步é€?æˆä»£ç?劣化;éšç€æ—¶é—´çš„æŽ¨ç§»ï¼Œè¿™ç§æ•ˆåº”将会导致代ç?è´¨é‡å¤§å¹…下é™ã€‚

å‚è§ï¼š

例å­ï¼š

布é²å…‹æ–¯æ³•则 (Brooks's Law)

软件开å‘åŽæœŸï¼Œæ·»åŠ?人力åªä¼šä½¿é¡¹ç›®å¼€å‘得更慢。

这个定律表明,在许多情况下,试图通过增åŠ?人力æ¥åŠ?速已延期项目的交付,将会使项目交付得更晚。布é²å…‹æ–¯ä¹Ÿæ˜Žç™½ï¼Œè¿™æ˜¯ä¸€ç§è¿‡åº¦ç®€åŒ–ã€‚ä½†ä¸€èˆ¬çš„è®ºæ®æ˜¯ï¼Œæ–°èµ„æºçš„æ—¶é—´å¢žåŠ?和通信开销,会在短期内使开å‘é€Ÿåº¦å‡æ…¢ã€‚而且,许多任务是密ä¸å¯åˆ†çš„,æ¢å¥è¯è¯´ï¼Œè¿™æ?·å¯ä»¥ä½¿æ›´å¤šçš„资æºä¹‹é—´èƒ½è½»æ˜“分é…,这也æ„å‘³ç€æ½œåœ¨çš„速度增长也更低。

谚语 ä¹ä¸ªå¥³äººä¸èƒ½åœ¨ä¸€ä¸ªæœˆå†…ç”Ÿä¸€ä¸ªå­©å­ ä¸Žå¸ƒé²å…‹æ–¯æ³•则åŒå‡ºä¸€è¾™ï¼Œç‰¹åˆ«æ˜¯æŸäº›ä¸å¯åˆ†å‰²æˆ–者并行的工作。

这是《人月神è¯ã€‹çš„中心主题。

å‚è§ï¼š

CAP å®šç† (CAP Theorem or Brewer's Theorem)

CAP 定ç†ç”± Eric Brewer æ‰€å®šä¹‰ï¼Œå®ƒæŒ‡å‡ºå¯¹äºŽåˆ†å¸ƒå¼æ•°æ®å­˜å‚¨æ¥è¯´ï¼Œä¸å¯èƒ½åŒæ—¶æ»¡è¶³ä»¥ä¸‹ä¸‰ç‚¹ï¼š

  • 一致性 (Consistency)ï¼šåœ¨è¯»å–æ•°æ®æ—¶ï¼Œæ¯ä¸ªè¯·æ±‚都会接收到 最新的 æ•°æ®ï¼Œæˆ–者返回错误。
  • å¯ç”¨æ€§ (Availability): åœ¨è¯»å–æ•°æ®æ—¶ï¼Œæ¯ä¸ªè¯·æ±‚都会接收到一个 éžé”™è¯¯çš„å“应,但ä¸èƒ½ä¿è¯è¯¥æ•°æ®æ˜¯ 最新的 æ•°æ®ã€‚
  • 分区容错性 (Partition Tolerance)ï¼šå½“èŠ‚ç‚¹ä¹‹é—´ä»»æ„æ•°é‡çš„网络请求失败时,系统能按预期继续è¿è¡Œã€‚

æ?¸å¿ƒè®ºè¯å¦‚下:å›?为æ—?法ä¿è¯ä¸ä¼šå­˜åœ¨ç½‘络分区(å‚è§åˆ†å¸ƒå¼è®¡ç®—的谬论 (The Fallacies of Distributed Computing)),所以在分区的情况下,我们å¯ä»¥é€‰æ‹©å–æ¶ˆå½“å‰æ“作(增åŠ?一致性并é™ä½Žå¯ç”¨æ€§ï¼‰ï¼Œæˆ–者选择继续进行该æ“作(增åŠ?å¯ç”¨æ€§é™ä½Žä¸€è‡´æ€§ï¼‰ã€‚

该定ç†çš„åå­—æ¥æºäºŽä¸€è‡´æ€§ (Consistency)ã€å¯ç”¨æ€§ (Availability)ã€åˆ†åŒºå®¹é”™æ€§ (Partition Tolerance) 的首字æ¯ã€‚请注æ„,这与 ACID 没有任何关系,å›?为其对一致性有å¦ä¸€ç§å®šä¹‰ã€‚最近å‘展出æ¥çš„ PACELC 定ç†ä¸Ž CAP 定ç†ç›¸æ¯”,增åŠ?了对网络 未 分区时(å³ç³»ç»ŸæŒ‰é¢„期æ“作时)的延迟和一致性的约æŸã€‚

大多数的现代数æ®åº“å¹³å°ä¼šé€šè¿‡å‘æ•°æ®åº“用户æä¾›é€‰é¡¹çš„æ–¹å¼ï¼Œæ¥é€‰æ‹©æ˜¯éœ€è¦é«˜åº¦å¯ç”¨çš„æ“ä½œï¼ˆæ¯”å¦‚â€œè„读 (dirty read)â€ï¼‰ï¼Œè¿˜æ˜¯é«˜åº¦ä¸€è‡´çš„æ“ä½œ(比如“法定确认写写入 (quorum acknowledged write)â€)——这间接地承认了这一定ç†ã€‚

现实世界的例å­ï¼š

  • Inside Google Cloud Spanner and the CAP Theorem - 该文详细介ç»äº† Cloud Spanner 是如何工作的,表é¢ä¸Šè¯¥å¹³å°ä¼¼ä¹Žèƒ½å¤Ÿä¿è¯ CAP 三者,但实际上ä¾ç„¶æ˜¯ä¸€ä¸ª CP 系统,å³åªæœ‰ä¸€è‡´æ€§å’Œåˆ†åŒºå®¹é”™æ€§ã€‚

å‚è§ï¼š

康å¨å®šå¾‹ (Conway's Law)

这个定律说明了系统的技术边界å¯ä»¥å应一个组织的结构,它通常会在改进组织时被æåŠã€‚康å¨å®šå¾‹è¡¨æ˜Žï¼Œå¦‚果一个组织被分散æˆè®¸å¤šå°è€Œæ—?è”系的å•元,那么它开å‘的软件也是å°è€Œåˆ†æ•£çš„。如果组织是更多地围绕以功能或æœåŠ¡ä¸ºå¯¼å‘çš„åž‚ç›´ç»“æž„ï¼Œé‚£ä¹ˆè½¯ä»¶ç³»ç»Ÿä¹Ÿä¼šåæ˜?这一点。

å‚è§ï¼š

åŽå®æ±‰å§†å®šå¾‹ (Cunningham's Law)

åœ¨ç½‘ç»œä¸Šæƒ³å¾—åˆ°æ­£ç¡®ç­”æ¡ˆçš„æœ€å¥½æ–¹æ³•ä¸æ˜¯æé—®é¢˜ï¼Œè€Œæ˜¯å‘布一个错误的答案。

æ®å²è’‚芬·麦克基迪说,沃德·åŽå®æ±‰å§†æ—©åœ¨ 20 世纪 80 年代早期的时候建议他,在互è”ç½‘ä¸ŠèŽ·å¾—æ­£ç¡®ç­”æ¡ˆçš„æœ€å¥½æ–¹æ³•ä¸æ˜¯æé—®é¢˜ï¼Œè€Œæ˜¯å‘布一个错误的答案。麦克基迪称这为åŽå®æ±‰å§†å®šå¾‹ï¼Œè€ŒåŽå®æ±‰å§†ä¸ä»¥ä¸ºç„¶ï¼Œå¹¶è§‰å¾—这是“错误的引用â€ã€‚最åˆè¿™æ¡å®šå¾‹åªæ˜¯ç”¨äºŽæè¿° Usenet ä¸Šçš„ç¤¾äº¤è¡Œä¸ºï¼Œä½†åŽæ¥ä¹Ÿæ¸æ¸ç”¨äºŽå…¶ä»–的在线社区(如 Wikipediaã€Redditã€Twitterã€Facebook 等)。

å‚è§ï¼š

é‚“å·´æ•°å­— (Dunbar's Number)

é‚“å·´æ•°å­—æ˜¯å¯¹ä¸€ä¸ªäººèƒ½å¤Ÿä¿æŒç¨³å®šç¤¾ä¼šå…³ç³»çš„人数的认知æžé™â€”—在这ç§å…³ç³»ä¸­ï¼Œä¸€ä¸ªäººçŸ¥é“æ¯ä¸ªäººæ˜¯è°ï¼Œä¹ŸçŸ¥é“æ¯ä¸ªäººä¸Žå…¶ä»–人的关系如何。而对这一数字的确切值则有ç€ä¸€äº›ä¸åŒæ„è§ã€‚邓巴指出,人仅能轻æ¾åœ°ç»´æŒ 150 个稳定的关系。这æ?·çš„关系在一个更社会化的背景中,便是当ä½?碰巧在酒å§é‡Œç¢°åˆ°è¿™äº›äººæ—¶å€™ï¼Œä½?ä¸ä¼šå›?为åŠ?入他们而感到尴尬。邓巴数字的估计值一般在 100 至 250 之间。

和人与人之间稳定的关系一æ?·ï¼Œå¼€å‘人员与代ç?库的关系也需è¦åŠªåŠ›ç»´æŠ¤ã€‚å½“é¢å¯¹å¤§åž‹ã€å¤æ‚çš„é¡¹ç›®ï¼Œæˆ–è®¸å¤šé¡¹ç›®çš„å½’å±žæƒæ—¶ï¼Œæˆ‘们会ä¾èµ–于约定ã€ç­–略和建模过程æ¥è¿›è¡Œæ‰©å±•。邓巴数字ä¸ä»…在办公室规模的扩大的过程中举足轻é‡ï¼Œè€Œä¸”在设置团队工作范围,或决定系统何时应该注é‡äºŽè¾…助建模和组织管ç†å¼€é”€è‡ªåŠ¨åŒ–çš„å·¥å…·æ—¶ï¼Œä¹Ÿæ˜¯éžå¸¸é‡è¦çš„。将邓巴数字放入工程内容中进行类比,那就是您能åŠ?入并有信心éšå«éšåˆ°è¿›è¡Œè½®æ¢çš„项目数(亦或是å•ä¸ªé¡¹ç›®çš„è§„èŒƒåŒ–å¤æ‚性)。

å‚è§ï¼š

费茨法则 (Fitts's Law)

该法则指出,移动到目æ?‡åŒºåŸŸæ‰€éœ€çš„æ—¶é—´æ˜¯åˆ°ç›®æ?‡çš„è·ç¦»é™¤ä»¥ç›®æ?‡å®½åº¦çš„函数。

Diagram: Fitts Law

(å›¾ç‰‡æ¥æºï¼šBy Foobar628 at English Wikipedia, Creative Commons Attribution-Share Alike 3.0 Unported, https://en.wikipedia.org/wiki/Fitts%27s_law#/media/File:Fitts_Law.svg)

费茨法则决定了在设计 UX 或 UI 时,交互元ç´?应该尽å¯èƒ½å¤§ï¼Œè€Œç”¨æˆ·æ³¨æ„力区域和交互元ç´?之间的è·ç¦»åº”该尽å¯èƒ½å°ã€‚这会对设计产生影å“,例如将相近的任务进行归类分组等。

åŒæ—¶å®ƒè¿˜å°†â€œé­”è§’ (Magic Corners)â€è¿™ä¸€æ¦‚念正å¼åŒ–,å³åœ¨è§’è½æ”¾ç½®å…³é”®çš„ UI å…ƒç´?,从而使得用户å¯ä»¥é€šè¿‡ç§»åЍé¼?æ?‡è½»æ¾ç‚¹å‡»åˆ°ã€‚Windows 的开始按钮便ä½äºŽé­”角处便于选择,而有趣的是 MacOS æ°æ°ç›¸å,它的“关闭窗å£â€æŒ‰é’® ä¸å¤„于 魔角处,从而能有效å‡å°è¢«è¯¯ç‚¹å‡»çš„æ¦‚率。

å‚è§ï¼š

盖尔定律 (Gall's Law)

一个切实å¯è¡Œçš„夿‚系统势必是从一个切实å¯è¡Œçš„简å•系统å‘展而æ¥çš„ã€‚ä»Žå¤´å¼€å§‹è®¾è®¡çš„å¤æ‚系统æ?¹æœ¬ä¸åˆ‡å®žå¯è¡Œï¼Œæ—?法修修补补让它切实å¯è¡Œã€‚ä½?必须由一个切实å¯è¡Œçš„简å•ç³»ç»Ÿé‡æ–°å¼€å§‹ã€‚

约翰·盖尔 (John Gall)

ç›–å°”å®šå¾‹è¯´æ˜Žäº†è®¾è®¡é«˜åº¦å¤æ‚的系统很å¯èƒ½ä¼šå¤±è´¥ã€‚它们很难一蹴而就,更多是从简å•çš„ç³»ç»Ÿé€æ¸æ¼”å˜è€Œæ¥ã€‚

最典型的例å­ä¾¿æ˜¯äº’è”网。如今的互è”ç½‘æ˜¯ä¸€ä¸ªé«˜åº¦å¤æ‚çš„ç³»ç»Ÿï¼Œè€Œå®ƒæœ€æ—©åªæ˜¯è¢«å®šä¹‰ä¸ºä¸€ç§åœ¨å­¦æœ¯æœºæž„之间共享内容的方å¼ã€‚互è”网æˆåŠŸå®žçŽ°äº†æœ€åˆçš„ç›®æ?‡ï¼Œå¹¶ä¸”éšç€æ—¶é—´ä¸æ–­æ¼”化,最终æˆå°±äº†å¦‚ä»Šçš„å¤æ‚ç¹è£ã€‚

å‚è§ï¼š

å¤å¾·å“ˆç‰¹å®šå¾‹ (Goodhart's Law)

å½“åŽ‹åŠ›æ–½äºŽå…¶ä¸Šä»¥è¿›è¡ŒæŽ§åˆ¶æ—¶ï¼Œä»»ä½•è§‚æµ‹åˆ°çš„ç»Ÿè®¡æ’æ€§éƒ½å€¾å‘消散。

查尔斯·å¤å¾·å“ˆç‰¹ (Charles Goodhart)

å¦è§ï¼š

当一个措施本身æˆä¸ºç›®æ?‡æ—¶ï¼Œå®ƒå°±ä¸å†æ˜¯ä¸€ä¸ªå¥½çš„æŽªæ–½ã€‚

玛丽莲·斯特拉腾 (Marilyn Strathern)

æ?¹æ®è¿™ä¸€å®šå¾‹ï¼Œç”±æµ‹é‡é©±åŠ¨çš„ä¼˜åŒ–å而å¯èƒ½å¯¼è‡´æµ‹é‡ç»“果本身的说æœåЛ䏋é™ã€‚盲目使用一些过度严æ?¼ç­›é€‰çš„æ–¹æ³• (KPIs) å¯èƒ½ä¼šäº§ç”Ÿä¸€äº›ä¸è‰¯çš„å½±å“。人们会倾å‘于用“钻空å­â€çš„行为去åšå±€éƒ¨ä¼˜åŒ–ï¼Œä»Žè€Œæ»¡è¶³ä¸€äº›ç‰¹å®šçš„åº¦é‡æ?‡å‡†ï¼Œè€Œä¸ä¼šåœ¨æ„整体的结果。

现实中的例å­ï¼š

  • Assert-free 测试å¯ä»¥è¾¾åˆ°ä»£ç?覆盖率的预期,但度é‡çš„目的应该是创é€?ç»è¿‡è‰¯å¥½æµ‹è¯•的软件。
  • ç”± commits 的行数æ¥è¯„ä»·å¼€å‘人员的表现,从而导致了ä¸åˆç†çš„代ç?库扩增。

å‚è§

汉隆的剃刀 (Hanlon's Razor)

能解释为愚è?¢çš„,就ä¸è¦è§£é‡Šä¸ºæ¶æ„的。

罗伯特·汉隆 (Robert J. Hanlon)

这一原则表明,一个行为所产生的消æžç»“æžœå¹¶ä¸æ˜¯æ¶æ„。相å,消æžç»“果更有å¯èƒ½å½’咎于这些没有得到充分ç†è§£çš„行动或影å“。

席克定律 (Hick's Law or Hick-Hyman Law)

决策时间和å¯ä¾›é€‰æ‹©çš„选项数é‡å‘ˆå¯¹æ•°å¢žé•¿å…³ç³»ã€‚

William Edmund Hick and Ray Hyman

在下方的等å¼ä¸­ï¼ŒT 是åšå‡ºå†³å®šæ‰€èŠ±è´¹çš„æ—¶é—´ï¼Œn 是选项的数é‡ï¼Œb 是一个由数æ®åˆ†æžæ‰€ç¡®å®šçš„常数。

席克定律

(图片å‚考:Creative Commons Attribution-Share Alike 3.0 Unported, https://en.wikipedia.org/wiki/Hick%27s_law)

该定律仅适用于选项 æŒ‰é¡ºåºæŽ’åˆ— 的情况,例如 ABCD。这éšå«åœ¨ä¸€äºŒä¸ºåº•的对数中,也就是说决策者本质上在进行 äºŒåˆ†æ³•æŸ¥æ‰¾ã€‚å®žéªŒè¡¨æ˜Žï¼Œå¦‚æžœé€‰é¡¹ä¸æ˜¯æŒ‰é¡ºåºæŽ’列的,那么所花费时间与选项个数将会呈线性增长关系。

这在 UI 设计中,该定律也å¯ä»¥æœ‰æ•ˆåœ°ç¡®ä¿ç”¨æˆ·åœ¨æœç´¢é€‰é¡¹æ—¶æ›´è½»æ¾æ„‰å¿«åœ°åšå‡ºå†³ç­–。

在 Speed of Information Processing: Developmental Change and Links to Intelligence 一文中å¯è§ï¼Œæ™ºå•†å’Œå应时间之间的相关性也满足席克定律。

å‚è§ï¼š

侯世达定律 (Hofstadter's Law)

å³ä½¿è€ƒè™‘到侯世达定律,它也总是比ä½?预期的è¦é•¿ã€‚

侯世达 (Douglas Hofstadter)

在估计需è¦å¤šé•¿æ—¶é—´å¼€å‘时,ä½?å¯èƒ½ä¼šå¬åˆ°æ­¤å®šå¾‹ã€‚软件开å‘似乎有这æ?·ä¸€æ¡å®šç†ï¼Œå³æˆ‘们往往ä¸èƒ½å‡†ç¡®åœ°ä¼°è®¡éœ€è¦å¤šé•¿æ—¶é—´æ‰èƒ½å®Œæˆã€‚

语出《哥德尔ã€è‰¾èˆå°”ã€å·´èµ«ï¼šé›†å¼‚璧之大æˆã€‹ã€‚

å‚è§ï¼š

哈伯特定律 (Hutber's Law)

æ”¹å–„å³æ¶åŒ–。

帕特里克·哈伯特 (Patrick Hutber)

这个定律说明了对一个系统的改进会导致其他部分的æ¶åŒ–;或者它会将其他的æ¶åŒ–éšè—èµ·æ¥ï¼Œå¹¶å¯¼è‡´ç³»ç»Ÿæ•´ä½“状æ€çš„退化。

例如,æŸä¸ªç«¯ç‚¹çš„å“应延迟å‡å°‘,就å¯èƒ½å¯¼è‡´è¯·æ±‚æµä¸­çš„åžåé‡å’Œå®¹é‡é—®é¢˜è¿›ä¸€æ­¥å¢žåŠ?,并影å“到å¦ä¸€ä¸ªå®Œå…¨ä¸åŒçš„å­ç³»ç»Ÿã€‚

技术æˆç†Ÿåº¦æ›²çº¿ (The Hype Cycle or Amara's Law)

我们倾å‘于过高估计技术在短期内的影å“,并低估长期效应。

罗伊·阿马拉 (Roy Amara)

技术æˆç†Ÿåº¦æ›²çº¿æ˜¯é«˜å¾·çº³å’¨è¯¢å…¬å¸å¯¹æŠ€æœ¯æœ€åˆå…´èµ·å’Œå‘展的视觉展现。一图顶åƒè¨€ï¼š

The Hype Cycle

(å›¾ç‰‡æ¥æº: By Jeremykemp at English Wikipedia, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=10547051)

简而言之,这个周期表明,新技术åŠå…¶æ½œåœ¨å½±å“通常会引å‘一阵浪潮。团队快速使用这些新技术,有时会对结果感到失望。这å¯èƒ½æ˜¯å›?为该技术还ä¸å¤Ÿæˆç†Ÿï¼Œæˆ–者现实应用还没有完全实现。ç»è¿‡ä¸€æ®µæ—¶é—´åŽï¼ŒæŠ€æœ¯çš„能力æé«˜äº†ï¼Œä½¿ç”¨å®ƒçš„实际机会会增åŠ?,最终团队也å¯ä»¥æé«˜å·¥ä½œæ•ˆçŽ‡ã€‚ç½—ä¼ŠÂ·é˜¿é©¬æ‹‰ç®€æ´åœ°æ€»ç»“了这一点:我们倾å‘于高估技术短期内的影å“,并低估长期效应。

éšå¼æŽ¥å£å®šå¾‹ (Hyrum's Law or The Law of Implicit Interfaces)

当 API 有足够多的用户时,ä½?在åˆåŒä¸­çš„æ‰¿è¯ºå·²ä¸é‡è¦ï¼šä½?系统的所有å¯è§‚察行为都将被æŸäº›äººæ‰€ä¾èµ–。

海伦·赖特 (Hyrum Wright)

éšå¼æŽ¥å£å®šå¾‹è¡¨æ˜Žï¼Œå½“ä½?çš„ API 有足够多的用户时,API 的所有行为(包括那些未囊括在公共说明中的一部分)最终都会被其他人所ä¾èµ–。 一个简å•çš„ä¾‹å­æ˜¯ API çš„å“应时间这ç§éžåŠŸèƒ½æ€§å›?ç´?ï¼Œè¿˜æœ‰ä¸€ä¸ªæ›´å¾®å¦™çš„ä¾‹å­æ˜¯ï¼šç”¨æˆ·ä½¿ç”¨æ­£åˆ™è¡¨è¾¾å¼åˆ¤æ–­é”™è¯¯ä¿¡æ¯çš„类型时,å³ä½¿ API 的公共说明没有说明消æ¯çš„å†…å®¹ï¼Œæ¥æŒ‡ç¤ºç”¨æˆ·é”™è¯¯çš„类型,一些用户也å¯èƒ½ä¼šä½¿ç”¨å¹¶æ›´æ”¹è¯¥æ¶ˆæ¯ï¼Œè€Œè¿™å®žé™…上会ç?´å API 的使用。

å‚è§ï¼š

柯林汉定律 (Kernighan's Law)

调试在一开始就比编写程åºå›°éš¾ä¸€å€ã€‚å›?此,按照定义,如果ä½?的代ç?写得éžå¸¸å·§å¦™ï¼Œé‚£ä¹ˆä½?就没有足够的能力æ¥è°ƒè¯•它。

布莱æ©Â·æŸ¯æž—汉 (Brian Kernighan)

柯林汉定律是以布莱æ©Â·æŸ¯æž—汉 (Brian Kernighan) çš„å字命å的,引述自柯林汉和普劳æ?¼ (P.J. Plauger) 的《编程æ?¼è°ƒã€‹ (The Elements of Programming Style) 一书中的一å¥è¯ï¼š

æ¯ä¸ªäººéƒ½çŸ¥é“,调试在一开始就比编写程åºå›°éš¾ä¸€å€ã€‚那么,如果您在编写它时尽å¯èƒ½åœ°å·§å¦™ï¼Œåˆå¦‚何æ¥è°ƒè¯•它?

尽管这有些夸å¼?,但它æå‡ºçš„论点是,简å•的代ç?ä¼šæ¯”å¤æ‚的代ç?æ›´å¯å–,å›?ä¸ºè°ƒè¯•å¤æ‚代ç?的过程中出现的任何问题都会å分棘手,甚至æ—?法解决。

å‚è§ï¼š

林纳斯定律 (Linus's Law)

足够多的眼ç›ï¼Œå°±å¯è®©æ‰€æœ‰é—®é¢˜æµ®çŽ°ã€‚

Eric S. Raymond

简å•地说,能够看到问题的人越多,有人解决过相关的问题或事情的å¯èƒ½æ€§å°±è¶Šé«˜ã€‚

最åˆè¯¥å®šå¾‹æ˜¯ç”¨æ¥æè¿°å¼€æºæ¨¡åž‹å¯¹äºŽé¡¹ç›®çš„价值的,并适用于任æ„çš„è½¯ä»¶é¡¹ç›®ã€‚åŒæ—¶å®ƒä¹Ÿå¯ä»¥æ‰©å±•åˆ°å¼€å‘æµç¨‹ä¹‹ä¸­â€”—更多的代ç?å®¡æŸ¥ã€æ›´å¤šçš„陿€åˆ†æžå’Œå¤šé‡æµ‹è¯•å¯ä»¥è®©é—®é¢˜æ›´åŠ?明显和容易识别。

林纳斯定律的一个更正å¼çš„说法如下:

如果有足够大的测试员和è”åˆå¼€å‘人员基础,那么å‡?乎æ¯ä¸ªé—®é¢˜éƒ½èƒ½å¾ˆå¿«è¢«ç‰¹å¾åŒ–,从而让以å‰é‡åˆ°è¿‡ç±»ä¼¼é—®é¢˜çš„人解决。

è¿™æ¡å®šå¾‹æœ€æ—©å‡ºçŽ°åœ¨ Eric S. Raymond 所著书 "The Cathedral and the Bazaar" 中,并以 Linus Torvalds çš„å字命å以作纪念。

梅特å¡å¤«å®šå¾‹ (Metcalfe's Law)

在网络ç†è®ºä¸­ï¼Œç³»ç»Ÿçš„价值约等于系统用户数的平方。

这个定律基于一个系统中å¯èƒ½çš„连接对数é‡ï¼Œå¹¶ä¸”与里德定律 (Reed's Law) å分相近。奥德利兹科 (Odlyzko) 和其他人认为,里德定律和梅特å¡å¤«å®šå¾‹å¤¸å¤§äº†ç³»ç»Ÿæœ¬èº«çš„价值,å›?为它们没有考虑到网络效应中人类认知的é™åˆ¶ã€‚

å‚è§:

摩尔定律 (Moore's Law)

集æˆç”µè·¯ä¸­çš„æ™¶ä½“管数é‡å¤§çº¦æ¯ä¸¤å¹´ç¿»ä¸€ç•ªã€‚

è¿™æ¡å®šå¾‹é€šå¸¸ç”¨äºŽè¯´æ˜ŽåŠå¯¼ä½“和芯片技术æé«˜çš„ç»å¯¹é€Ÿåº¦ã€‚从 20 世纪 70 年代到 21 世纪å‰åå¹´ï¼Œæ‘©å°”çš„é¢„æµ‹è¢«è¯æ˜Žæ˜¯é«˜åº¦å‡†ç¡®çš„。 è¿‘å¹´æ¥ï¼Œè¿™ç§è¶‹åŠ¿ç•¥æœ‰å˜åŒ–,部分原å›?å—到é‡å­éš§ç©¿æ•ˆåº”å½±å“。然而,并行化计算的进步以åŠåŠå¯¼ä½“技术和é‡å­è®¡ç®—潜在的é©å‘½æ€§å˜åŒ–,å¯èƒ½æ„å‘³ç€æ‘©å°”定律在未æ¥å‡?åå¹´å†…ç»§ç»­ä¿æŒæ­£ç¡®ã€‚

墨è²å®šå¾‹ (Murphy's Law / Sod's Law)

凡是å¯èƒ½å‡ºé”™çš„事就一定会出错。

出自 爱德åŽÂ·AÂ·å¢¨è² ï¼Œ 墨è²å®šå¾‹ 说明了如果一件事有å¯èƒ½å‡ºé”™ï¼Œé‚£ä¹ˆå°±ä¸€å®šä¼šå‡ºé”™ã€‚

这是一å¥å¼€å‘人员间的俗语,在开å‘ã€æµ‹è¯•甚至在生产中都有å¯èƒ½ä¼šå‘ç”Ÿä¸€äº›ä»¤äººæ„æƒ³ä¸åˆ°çš„事情。而这一定律也å¯ä»¥å‚考在英å¼è‹±è¯­ä¸­æ›´ä¸ºå¸¸è§çš„ ç´¢å¾·å®šç† ï¼š

如果æŸä»¶äº‹å¯èƒ½å‡ºé”™ï¼Œé‚£ä¹ˆå®ƒä¸€å®šä¼šåœ¨æœ€ç³Ÿç³•的时候å‘生。

这些定律常常用于幽默嘲弄。但是,类似于 Confirmation Bias å’Œ Selection Bias 的现象很容易导致人们过分强调这些定律(å³åœ¨å¤§éƒ¨åˆ†æƒ…况下,一件事的æˆåŠŸä¼šæ˜¾å¾—å¸ç©ºè§æƒ¯ï¼›è€Œå¤±è´¥æ‰ä¼šå¼•起更多的注æ„和讨论)。

å‚è§:

奥å¡å§†å‰ƒåˆ€ (Occam's Razor)

如æ—?å¿…è¦ï¼Œå‹¿å¢žå®žä½“。

奥å¡å§†çš„å¨å»‰ (William of Ockham)

奥å¡å§†å‰ƒåˆ€æŒ‡å‡ºï¼Œåœ¨å‡?ç§å¯èƒ½çš„解决方案之中,最有å¯èƒ½çš„解决方案便是概念和å‡è®¾æœ€å°‘的那个。å›?为这个解决方案最为简å•,åªè§£å†³äº†é—®é¢˜ï¼Œå¹¶ä¸”没有引入é¢å¤–çš„å¤æ‚度和å¯èƒ½çš„è´Ÿé¢åŽæžœã€‚

å‚è§ï¼š

例å­ï¼š

å¸•é‡‘æ£®å®šç† (Parkinson's Law)

在工作能够完æˆçš„æ—¶é™å†…,工作é‡ä¼šä¸€ç›´å¢žåŠ?,直到所有å¯ç”¨æ—¶é—´éƒ½è¢«å¡«æ»¡ä¸ºæ­¢ã€‚

基于官僚机构的ç?”究背景,该定律被应用于软件开å‘中。该ç†è®ºè®¤ä¸ºï¼Œå›¢é˜Ÿåœ¨æˆªæ­¢æ—¥æœŸä¹‹å‰æ•ˆçŽ‡ä½Žä¸‹ï¼Œç„¶åŽåœ¨æˆªæ­¢æ—¥æœŸå‰èµ¶ç´§å®Œæˆå·¥ä½œï¼Œä»Žè€Œä½¿å®žé™…截止日期å˜å¾—éšæ„。

将这个定ç†ä¸Žä¾¯ä¸–达定律相结åˆï¼Œåˆ™ä¼šèŽ·å¾—æ›´åŠ?悲观的观点:为了在规定时间内完æˆå·¥ä½œï¼Œå·¥ä½œå°†å¢žå¤šï¼ŒèŠ±è´¹æ¯”é¢„æœŸæ›´é•¿çš„æ—¶é—´ã€‚

å‚è§ï¼š

过早优化效应 (Premature Optimization Effect)

过早优化是万æ¶ä¹‹æºã€‚

高德纳 (å”纳德克努特的中文å)

在高德纳的《goto 语å¥çš„结构化编程》论文中,他写到:“程åºå‘˜ä»¬æµªè´¹äº†å¤§é‡çš„æ—¶é—´åŽ»æ€è€ƒæˆ–者担心他们的程åºä¸­çš„éžå…³é”®éƒ¨åˆ†çš„速度。而在考虑调试和维护的时候,这些所谓æé«˜æ•ˆçŽ‡çš„åšæ³•实际上å分ä¸å¦¥ã€‚我们应该放弃å°çš„æ•ˆçŽ‡ç‚¹ï¼Œå¹¶ä¸”è¦åœ¨ 97% 的时间æé†’自己,过早优化是万æ¶ä¹‹æºã€‚而且连那关键的 3% 也ä¸èƒ½å¤Ÿæ”¾è¿‡ã€‚â€

然而,过早优化 (简而言之)å¯ä»¥å®šä¹‰ä¸ºåœ¨æˆ‘们知é“需è¦åšä»€ä¹ˆä¹‹å‰è¿›è¡Œä¼˜åŒ–。

普特定律 (Putt's Law)

技术由两类人主导,一类是纯粹的管ç†äººå‘˜ï¼Œ 一类是纯粹的技术人员。

普特定律常常éµå¾ªæ™®ç‰¹æŽ¨è®ºï¼š

æ¯ä¸€ä¸ªæŠ€æœ¯å±‚次,å‡ä»¥æ—¶æ—¥ï¼Œèƒ½åŠ›å°†é€†è½¬ã€‚

这些结论表明,由于å„ç§é€‰æ‹©æ?‡å‡†å’Œç¾¤ä½“组织的趋势,技术组织的工作层é¢å°†æœ‰ä¸€äº›æŠ€æœ¯äººå‘˜ï¼Œä»¥åŠä¸€äº›ä¸äº†è§£å¤æ‚性和挑战的管ç†äººå‘˜ã€‚è¿™ç§çŽ°è±¡å¯èƒ½æ˜¯ç”±äºŽ å½¼å¾—åŽŸç† (The Peter Principle) 或 呆伯特法则 (The Dilbert Principle) é€?æˆçš„。

但是,应该强调的是,诸如此类的定律是一ç§å¹¿æ³›çš„æ¦‚括,å¯èƒ½é€‚用于æŸäº›ç±»åž‹çš„组织,而ä¸é€‚用于其他组织。

å‚è§ï¼š

里德定律 (Reed's Law)

大型网络,尤其是社交网络的效用会éšç€ç½‘络的大å°å‘ˆæŒ‡æ•°çº§æ‰©å¢žã€‚

这一定律基于图论,图论中的效用与å¯èƒ½çš„å­ç»„æ•°é‡å‘ˆæ­£æ¯”,并且该增长速度会比å‚与者的数é‡å’Œå¯èƒ½çš„连接对数é‡è¦å¿«ã€‚奥德利兹科 (Odlyzko) 和其他人认为,里德定律夸大了系统本身的价值,å›?为它们没有考虑到网络效应中人类认知的é™åˆ¶ã€‚

å‚è§:

夿‚性守æ’定律 (The Law of Conservation of Complexity or Tesler's Law)

该定律表明系统中存在ç€ä¸€å®šç¨‹åº¦çš„夿‚性,并且ä¸èƒ½å‡å°‘。

系统中的æŸäº›å¤æ‚性是æ—?æ„的。这是由于结构ä¸è‰¯ï¼Œé”™è¯¯æˆ–者糟糕的建模é€?æˆçš„ã€‚è¿™ç§æ—?æ„çš„å¤æ‚性å¯ä»¥å‡å°‘æˆ–è€…æ¶ˆé™¤ã€‚ç„¶è€Œï¼Œç”±äºŽå¾…è§£å†³é—®é¢˜å›ºæœ‰çš„å¤æ‚性,æŸäº›å¤æ‚性是内在的。这ç§å¤æ‚性å¯ä»¥è½¬ç§»ï¼Œä½†ä¸èƒ½æ¶ˆé™¤ã€‚

该定律有趣的一点是,å³ä½¿ç®€åŒ–æ•´ä¸ªç³»ç»Ÿï¼Œå†…åœ¨çš„å¤æ‚性也ä¸ä¼šé™ä½Žã€‚å®ƒä¼šè½¬ç§»åˆ°ç”¨æˆ·ï¼Œå¹¶ä¸”ç”¨æˆ·å¿…é¡»ä»¥æ›´å¤æ‚的方å¼è¡Œäº‹ã€‚

得墨忒耳定律 (The Law of Demeter)

别和陌生人讲è¯ã€‚

得墨忒耳定律åˆç§°æœ€å°‘知识原则,是一æ¡ä¸Žé¢å‘对象语言有关的软件设计原则。

该定律表明,软件的一个å•元应该åªä¸Žå…¶ç›´æŽ¥åˆä½œè€…交谈。比如对象 A 引用了对象 B,对象 B 引用了对象 C,则 A å¯ä»¥ç›´æŽ¥è°ƒç”¨ B 的方法,但ä¸åº”直接调用 C 的方法。所以如果 C 有一个 dothing() 的方法,A ä¸åº”该直接调用,而是使用 B.getC().doThis()。

éµå¾ªè¿™ä¸€å®šå¾‹å¯ä»¥é™åˆ¶ä»£ç?æ›´æ”¹çš„èŒƒå›´ï¼Œä½¿å…¶ä»¥åŽæ›´å®¹æ˜“ç»´æŠ¤ã€æ›´å®‰å…¨ã€‚

抽象泄æ¼å®šå¾‹ (The Law of Leaky Abstractions)

在æŸç§ç¨‹åº¦ä¸Šï¼Œæ‰€æœ‰éžå¹³å‡¡çš„æŠ½è±¡éƒ½æ˜¯æœ‰æ³„æ¼çš„。

乔尔斯·波尔斯基 (Joel Spolsky)

è¯¥å®šå¾‹æŒ‡å‡ºï¼Œé€šå¸¸ç”¨äºŽç®€åŒ–å¤æ‚系统的抽象,在æŸäº›æƒ…况下将底层系统泄æ¼å‡ºæ¥ï¼Œä½¿å¾—抽象表现出æ„外的行为。

例如åŠ?载文件并读å–其内容。文件系统 API 是较低级别内æ?¸ç³»ç»Ÿçš„æŠ½è±¡ï¼Œå®ƒä»¬æœ¬èº«æ˜¯ä¸Žç£ç›˜ï¼ˆæˆ– SSD çš„é—ªå­˜ï¼‰ä¸Šçš„æ•°æ®æ›´æ”¹ç›¸å…³çš„物ç†è¿‡ç¨‹çš„æŠ½è±¡ã€‚åœ¨å¤§å¤šæ•°æƒ…å†µä¸‹ï¼Œå¤„ç†æ–‡ä»¶ï¼ˆå¦‚äºŒè¿›åˆ¶æ•°æ®æµï¼‰çš„æŠ½è±¡å°†èµ·ä½œç”¨ã€‚但是,对于ç£ç›˜é©±åŠ¨å™¨ï¼Œé¡ºåºè¯»å–æ•°æ®å°†æ¯”éšæœºè®¿é—®å¿«å¾—多(由于页é¢é”™è¯¯çš„开销增åŠ?)。但对于 SSD 驱动器,此开销ä¸ä¼šå‡ºçŽ°ã€‚éœ€è¦ç†è§£åŸºç¡€ç»†èŠ‚æ¥å¤„ç†è¿™ç§æƒ…况(例如,数æ®åº“索引文件的良好结构å¯ä»¥å‡å°‘éšæœºè®¿é—®çš„开销),开å‘人员需è¦åˆç†çš„æŠ½è±¡ï¼Œæ¥å¤„ç†ä¸åŒçš„细节。

当引入更多的抽象时,上é¢çš„例å­ä¼šå˜å¾—æ›´å¤æ‚。Linux æ“作系统å…è®¸é€šè¿‡ç½‘ç»œè®¿é—®æ–‡ä»¶ï¼Œä½†åœ¨æœ¬åœ°è¡¨ç¤ºä¸ºæ™®é€šæ–‡ä»¶ã€‚å¦‚æžœå­˜åœ¨ç½‘ç»œæ•…éšœï¼Œè¿™ç§æŠ½è±¡å°†ä¼šæ³„æ¼ã€‚如果开å‘人员将这些文件视为普通文件,而ä¸è€ƒè™‘它们å¯èƒ½ä¼šå—到网络延迟和故障的影å“,那么解决方案就会出错。

æè¿°è¯¥å®šå¾‹çš„æ–‡ç«?表明,过度ä¾èµ–抽象,åŠ?上对底层过程的ç†è§£ä¸è¶³ï¼Œå®žé™…上使得问题在æŸäº›æƒ…况下更åŠ?夿‚。

å‚è§ï¼š

真实的例å­ï¼š

  • Photoshop å¯åŠ¨ç¼“æ…¢ï¼šæˆ‘è¿‡åŽ»é‡åˆ°è¿‡ä¸€ä¸ªé—®é¢˜ï¼Œå°±æ˜¯ Photoshop å¯åŠ¨ç¼“æ…¢ï¼Œæœ‰æ—¶éœ€è¦å‡?åˆ†é’Ÿã€‚é—®é¢˜å¥½åƒæ˜¯ Photoshop å¯åŠ¨æ—¶ï¼Œä¼šè¯»å–当å‰é»˜è®¤æ‰“å°æœºçš„一些信æ¯ã€‚ä½†æ˜¯ï¼Œå¦‚æžœè¯¥æ‰“å°æœºå®žé™…上是一å°ç½‘ç»œæ‰“å°æœºï¼Œåˆ™å¯èƒ½éœ€è¦å¾ˆé•¿çš„æ—¶é—´ã€‚å°†ç½‘ç»œæ‰“å°æœºä¸Žæœ¬åœ°æ‰“å°æœºå½“ä½œåŒæ?·çš„æŠ½è±¡ï¼Œå¯¼è‡´è¿žæŽ¥ä¸è‰¯çš„æƒ…况下出现问题。

帕金森çç¢Žå®šç† (The Law of Triviality)

è¯¥å®šç†æ˜¾ç¤ºï¼Œç¾¤ä½“将给予更多的时间和注æ„力æ¥å¤„ç†çç¢Žçš„é—®é¢˜ï¼Œè€Œä¸æ˜¯ç”¨æ¥å¤„ç†ä¸¥è‚ƒè€Œå®žè´¨æ€§çš„问题。

常è§çš„è™šæž„ä¾‹å­æ˜¯å§”员会批准æ?¸ç”µç«™çš„è®¡åˆ’ï¼Œä»–ä»¬å¤§éƒ¨åˆ†æ—¶é—´éƒ½åœ¨è®¨è®ºè‡ªè¡Œè½¦æ£šçš„ç»“æž„ï¼Œè€Œä¸æ˜¯ç”µåŽ‚æœ¬èº«ç­‰æ›´ä¸ºé‡è¦çš„设计。如果没有大é‡çš„专业知识或者准备,很难给éžå¸¸å¤§çš„夿‚主题讨论æä¾›å®è´µçš„æ„è§ã€‚但是,人们希望看到更多æ„è§ã€‚å›?此,他们倾å‘äºŽå°†å¤§é‡æ—¶é—´é›†ä¸­åœ¨å¾ˆå®¹æ˜“推敲,但ä¸ä¸€å®šè¢«çœ‹é‡çš„å°ç»†èŠ‚ä¸Šã€‚

由上é¢çš„虚构例å­äº§ç”Ÿäº† Bike Shedding 的说法,以形容在ç碎细节上浪费时间这一行为。

Unix 哲学 (The Unix Philosophy)

Unix 哲学指软件组件应该很å°ï¼Œå¹¶ä¸“注于åšä¸€ä»¶ç‰¹å®šçš„事情。将å°è€Œç®€å•以åŠå®šä¹‰è‰¯å¥½çš„å•元组åˆåœ¨ä¸€èµ·ï¼Œè€Œä¸æ˜¯ä½¿ç”¨å¤§è€Œå¤æ‚的多用途程åºï¼Œå¯ä»¥æ›´è½»æ¾åœ°æž„建系统。

åƒå¾®æœåŠ¡æž¶æž„è¿™ç§çŽ°ä»£å®žè·µå¯ä»¥è®¤ä¸ºæ˜¯è¿™ç§å“²å­¦çš„应用,其中æœåŠ¡å¾ˆå°ï¼Œé›†ä¸­äºŽåšä¸€ä»¶ç‰¹å®šçš„事情,由简å•的构建å—组æˆå¤æ‚的行为。

Spotify 模型 (The Spotify Model)

Spotify æ¨¡åž‹æ˜¯å›¢é˜Ÿå’Œç»„ç»‡ç»“æž„çš„ä¸€ç§æ–¹æ³•,已被 Spotify 实验室推广开æ¥ã€‚åœ¨æ­¤æ¨¡åž‹ä¸­ï¼Œå›¢é˜Ÿå›´ç»•åŠŸèƒ½è€ŒéžæŠ€æœ¯è¿›è¡Œç»„ç»‡ã€‚

Spotify 模型还普åŠäº†éƒ¨è½ã€è¡Œä¼šä»¥åŠç«?节的概念,这些是组织结构的其他组æˆéƒ¨åˆ†ã€‚

沃德勒定律 (Wadler's Law)

任何语言设计中,讨论下é¢åˆ—表中æŸä¸ªè¦ç´?所花费的总时间与其ä½ç½®æˆæ­£æ¯”。

  1. 语义 (Semantics)
  2. 语法 (Syntax)
  3. è¯æ³• (Lexical syntax)
  4. 注释语法 (Lexical syntax of comments)

ï¼ˆç®€è€Œè¨€ä¹‹ï¼Œåœ¨è¯­ä¹‰ä¸ŠèŠ±è´¹ä¸€ä¸ªå°æ—¶ï¼Œå°±è¦åœ¨æ³¨é‡Šè¯­æ³•ä¸ŠèŠ±è´¹å…«ä¸ªå°æ—¶ï¼‰ã€‚

与 帕金森çç¢Žå®šç† ç±»ä¼¼, 沃德勒定律指出,在设计语言时,与这些特å¾çš„é‡è¦æ€§ç›¸æ¯”,花在语言结构上的时间过多。

å‚è§ï¼š

�顿定律 (Wheaton's Law)

ä¸è¦åƒä¸ªå‚»å­ä¸€æ?·ã€‚

å¨å°”·æƒ?é¡¿ (Wil Wheaton)

è¿™æ¡å®šå¾‹ç”±å¨å°” · æƒ?顿(曾出演过星际迷航:下一代ã€ç”Ÿæ´»å¤§çˆ†ç‚¸ï¼‰åˆ›é€?,这个简æ´è€Œæœ‰åŠ›çš„å®šå¾‹æ—¨åœ¨ä¸“ä¸šç»„ç»‡å†…è¥é€?å’Œè°å’Œå°Šé‡çš„环境。它å¯ä»¥åœ¨ä¸ŽåŒäº‹äº¤è°ˆã€ä»£ç?审查ã€åé©³è§‚ç‚¹å’Œæ‰¹è¯„çš„æ—¶å€™æ´¾ä¸Šç”¨åœºã€‚è€Œä¸”é€šå¸¸æƒ…å†µä¸‹ï¼Œäººä»¬ä¹‹é—´çš„ä¸“ä¸šäº¤äº’ä¹ŸåŒæ?·é€‚用。

原则

原则通常是与设计相关的准则。

切斯特森围æ? (Chesterson's Fence)

在了解现有情况背åŽçš„原å›?之å‰ï¼Œä¸åº”该进行改进。

该原则与软件工程中的消除技术负债 (Technical debt) 相关。程åºçš„æ¯ä¸€è¡Œæœ€åˆéƒ½æ˜¯å‡ºäºŽæŸç§åŽŸå›?编写的,å›?æ­¤æ?¹æ®åˆ‡æ–¯ç‰¹æ£®å›´æ?原则,在更改或åˆ?除代ç?之å‰ï¼Œå³ä½¿çœ‹èµ·æ¥ä¼¼ä¹Žæ˜¯å¤šä½™çš„æˆ–䏿­£ç¡®çš„,也应该å°è¯•完全ç†è§£ä»£ç?的上下文和å«ä¹‰ã€‚

该原则的åå­—æ¥æºäºŽ G.K. Chesterson 的一则故事。一个男人横穿马路中央的æ?…æ?,他å‘å¸‚é•¿æŠ±æ€¨è¿™é“æ?…æ?æ²¡æœ‰ç”¨è¿˜æŒ¡è·¯ï¼Œå¹¶è¦æ±‚拆除它。市长问他为什么è¦åœ¨é‚£é‡Œå»ºæ?…æ?,那个人回答说ä¸çŸ¥é“。市长接ç€è¯´ï¼šâ€œå¦‚æžœä½?ä¸çŸ¥é“它的用途,我肯定ä¸ä¼šè®©ä½?把它拆了。ä½?åŽ»æŸ¥æŸ¥å®ƒçš„ç”¨é€”ï¼Œä¹‹åŽæˆ‘å¯èƒ½ä¼šå…许ä½?拆掉它。â€

死海效应 (The Dead Sea Effect)

"... 那些更有æ‰åŽï¼Œæ›´æœ‰æ•ˆçŽ‡çš„ IT 工程师最有å¯èƒ½ç¦»å¼€â€”—消失 ... (而那些倾å‘于)留下æ¥çš„“剩下的人â€â€”—是最没有æ‰åŽå’Œæ•ˆçŽ‡çš„ IT 工程师。"

Bruce F. Webster

æ­»æµ·æ•ˆåº”è¡¨æ˜Žï¼Œåœ¨ä»»ä½•ä¸€ä¸ªç»„ç»‡ä¸­ï¼Œå·¥ç¨‹å¸ˆçš„æŠ€èƒ½ã€æ‰åŽå’Œæ•ˆèƒ½å¾€å¾€ä¸Žä»–们在公å¸çš„æ—¶é—´å‘ˆå比。

通常情况下,技术好的工程师很容易在其他的地方找到工作,并且他们往往也会这æ?·åšã€‚而技能过时或技术薄弱的工程师则会留在公å¸ï¼Œå›?为其他地方很难找到工作。如果这些工程师在公å¸é‡ŒèŽ·å¾—äº†åŠ?薪,他们会更愿æ„留在公å¸ï¼Œå›?为在其他地方找到åŒç­‰è–ªé…¬çš„工作会很有挑战性。

呆伯特法则 (The Dilbert Principle)

å…¬å¸ä¼šå€¾å‘于系统地将工作能力差的员工æå‡åˆ°ç®¡ç†å±‚,以使他们脱离工作æµç¨‹ã€‚

å²è€ƒç‰¹Â·äºšå½“æ–¯ (Scott Adams)

呆伯特原则是由å²è€ƒç‰¹Â·äºšå½“æ–¯ (Dilbert 漫画连环画的创建者) å¼€å‘çš„ä¸€ä¸ªç®¡ç†æ¦‚å¿µï¼Œçµæ„Ÿæ¥æºäºŽå½¼å¾—原ç†ã€‚æ?¹æ®å‘†ä¼¯ç‰¹åŽŸåˆ™ï¼Œå·¥ä½œèƒ½åŠ›å·®çš„å‘˜å·¥ä¼šè¢«æå‡åˆ°ç®¡ç†å±‚,从而é™åˆ¶ä»–们所能é€?æˆçš„æŸå®³ã€‚äºšå½“æ–¯é¦–å…ˆåœ¨ 1995 年《åŽå°”街日报》的一篇文ç«?中解释了这一原则,éšåŽåœ¨ä»– 1996 年的商业书ç±ã€Šå‘†ä¼¯ç‰¹åŽŸåˆ™ã€‹ä¸­è¿›è¡Œäº†æ‰©å±•ã€‚

å‚è§ï¼š

帕累托法则 (The Pareto Principle or The 80/20 Rule)

ç”Ÿæ´»ä¸­å¤§å¤šæ•°äº‹æƒ…ä¸æ˜¯å‡åŒ€åˆ†å¸ƒçš„。

帕累托法则å¯ä»¥å¸®ä½?认识到大多数结果æ¥è‡ªå°‘数投入:

  • æŸä¸ªè½¯ä»¶çš„ 80ï¼… 代ç?åªå?äº†æ€»åˆ†é…æ—¶é—´çš„ 20%(相å,最难的 20ï¼… 代ç?部分å?用了 80ï¼… 的时间)
  • 20ï¼… 的努力产生了 80ï¼… 的结果
  • 20ï¼… 的工作创é€?了 80ï¼… 的收入
  • 20ï¼… 的错误导致了 80ï¼… 的崩溃
  • 20ï¼… 的功能导致了 80ï¼… 的使用é‡

在 20 世纪 40 å¹´ä»£ï¼Œå…¬è®¤ä¸ºè´¨é‡æŽ§åˆ¶ä¹‹çˆ¶çš„ç¾Žå›½ç½—é©¬å°¼äºšå·¥ç¨‹å¸ˆçº¦ç‘Ÿå¤«Â·æœ±å…°åšå£«ï¼Œå¼€å§‹å°†å¸•累托法则应用于质é‡é—®é¢˜ã€‚

这个原则也被称为二八法则,é‡è¦çš„少数法则和å›?ç´?稀ç–原则。

现实的例å­ï¼š

  • 微软 2002 å¹´çš„æŠ¥å‘Šè¡¨æ˜Žï¼Œä¿®å¤æœ€å¸¸å‡ºçŽ°çš„ 20ï¼… 错误,将消除 Windows å’Œ Office 中 80ï¼… çš„ 错误和崩溃。报告地å€

å½¼å¾—åŽŸç† (The Peter Principle)

在等级制度中,人往往会被æå‡åˆ°ä»–们的“æ—?法胜任的水平â€ã€‚

劳伦斯·彼得 (Laurence J. Peter)

这是由劳伦斯·彼得æå‡ºçš„ä¸€ä¸ªç®¡ç†æ¦‚念。彼得原ç†è®¤ä¸ºï¼Œæ“…长工作的人会得到æå‡ï¼Œç›´åˆ°ä»–们达到ä¸å†æˆåŠŸçš„æ°´å¹³ (å³ä»–们所“æ—?法胜任的水平â€)。基于此,由于他们资历更高,被公å¸å¼€é™¤çš„å¯èƒ½æ€§è¾ƒå° (除éžä»–们表现éžå¸¸ç³Ÿç³•)。而且他们将继续担任å‡?ä¹Žæ²¡æœ‰æœ¬èŒæŠ€èƒ½çš„èŒä½ï¼Œå³ä½¿é‚£äº›åŽŸæœ¬è®©ä»–ä»¬æˆåŠŸçš„èƒ½åŠ›åœ¨æ–°å·¥ä½œä¸­å¹¶æ—?å¿…è¦ã€‚

有的工程师对此特别感兴趣,它们最åˆä»Žäº‹çš„æ˜¯æ·±åº¦çš„æŠ€æœ¯å·¥ä½œï¼Œä½†èµ°ä¸Šäº†ç®¡ç†å…¶ä»–工程师的èŒä¸šé“路——这æ„味ç€éœ€è¦ä¸€ä¸ªå®Œå…¨ä¸åŒçš„æŠ€èƒ½æ?‘。

å‚è§ï¼š

鲿£’性原则 (The Robustness Principle or Postel's Law)

在自己所åšçš„事情上è¦ä¿å®ˆ, 在接å—别人的事情上è¦è‡ªç”±ã€‚

通常应用于æœåŠ¡å™¨åº”ç”¨ç¨‹åºå¼€å‘中,该原则指出,ä½?å‘é€ç»™å…¶ä»–人的内容应尽å¯èƒ½æœ€å°ä¸”符åˆè¦æ±‚,并且处ç†ä¸ç¬¦åˆè¦æ±‚的输入。

该原则的目æ?‡æ˜¯æž„建稳å¥çš„系统。如果å¯ä»¥ç†è§£æ„图,它们å¯ä»¥å¤„ç†ä¸è‰¯çš„输入。但是,接å—错误æ?¼å¼çš„输入å¯èƒ½å­˜åœ¨å®‰å…¨éšæ‚£ï¼Œç‰¹åˆ«æ˜¯æ­¤ç±»çš„è¾“å…¥æœªç»è¿‡å……分测试。

SOLID

这是一个缩写,指的是:

这些是 Object-Oriented Programming 的关键原则。诸如此类的设计原则能够帮助开å‘人员构建更易于维护的系统。

å•一功能原则 (The Single Responsibility Principle)

æ¯ä¸ªæ¨¡å—或者类åªåº”该有一项功能。

SOLID çš„ç¬¬ä¸€ä¸ªåŽŸåˆ™ã€‚è¿™ä¸ªåŽŸåˆ™è¡¨æ˜Žæ¨¡å—æˆ–者类åªåº”该åšä¸€ä»¶äº‹ã€‚实际上,这æ„味ç€å¯¹ç¨‹åºåŠŸèƒ½çš„å•ä¸ªå°æ›´æ”¹ï¼Œåº”该åªéœ€è¦æ›´æ”¹ä¸€ä¸ªç»„件。例如,更改密ç?验è¯å¤æ‚性的方å¼åº”该åªéœ€è¦æ›´æ”¹ç¨‹åºçš„一部分。

ç†è®ºä¸Šè®²ï¼Œè¿™ä½¿ä»£ç?æ›´å¥å£®ï¼Œæ›´å®¹æ˜“æ›´æ”¹ã€‚çŸ¥é“æ­£åœ¨æ›´æ”¹çš„ç»„ä»¶åªæœ‰ä¸€ä¸ªåŠŸèƒ½ï¼Œè¿™æ„å‘³ç€æµ‹è¯•更改更容易。使用å‰é¢çš„例å­ï¼Œæ›´æ”¹å¯†ç?夿‚性组件应该åªå½±å“与密ç?夿‚æ€§ç›¸å…³çš„åŠŸèƒ½ã€‚å˜æ›´å…·æœ‰è®¸å¤šåŠŸèƒ½çš„ç»„ä»¶å¯èƒ½è¦å›°éš¾å¾—多。

å‚è§ï¼š

开闭原则 (The Open/Closed Principle)

实体应开放扩展并关闭修改。

SOLID 的第二个原则。这个原则指出实体(å¯ä»¥æ˜¯ç±»ã€æ¨¡å—ã€å‡½æ•°ç­‰ï¼‰åº”该能够使它们的行为易于扩展,但是它们的扩展行为ä¸åº”该被修改。

举一个å‡è®¾çš„例å­ï¼Œæƒ³è±¡ä¸€ä¸ªèƒ½å¤Ÿå°† Markdown 转æ¢ä¸º HTML 的模å—。如果å¯ä»¥æ‰©å±•模å—,而ä¸ä¿®æ”¹å†…éƒ¨æ¨¡å—æ¥å¤„ç†æ–°çš„ markdown 特å¾ï¼Œè€Œæ—?需修改内部模å—,则å¯ä»¥è®¤ä¸ºæ˜¯å¼€æ”¾æ‰©å±•。如果用户ä¸èƒ½ä¿®æ”¹å¤„ç†çŽ°æœ‰ Markdown 特å¾çš„æ¨¡å—,那么它被认为是关闭修改。

这个原则与é¢å‘对象编程紧密相关,让我们å¯ä»¥è®¾è®¡å¯¹è±¡ä»¥ä¾¿äºŽæ‰©å±•,但是å¯ä»¥é¿å…ä»¥æ„æƒ³ä¸åˆ°çš„æ–¹å¼æ”¹å˜å…¶çŽ°æœ‰å¯¹è±¡çš„è¡Œä¸ºã€‚

å‚è§ï¼š

é‡Œæ°æ›¿æ¢åŽŸåˆ™ (The Liskov Substitution Principle)

å¯ä»¥åœ¨ä¸ç?´å系统的情况下,用å­ç±»åž‹æ›¿æ¢ç±»åž‹ã€‚

SOLID 的第三个原则。该原则指出,如果组件ä¾èµ–于类型,那么它应该能够使用该类型的å­ç±»åž‹ï¼Œè€Œä¸ä¼šå¯¼è‡´ç³»ç»Ÿå¤±è´¥æˆ–者必须知é“该å­ç±»åž‹çš„详细信æ¯ã€‚

举个例å­ï¼Œå‡è®¾æˆ‘ä»¬æœ‰ä¸€ä¸ªæ–¹æ³•ï¼Œè¯»å– XML 文档。如果该方法使用基类型 file,则从 file 派生的任何内容,都能用在该方法中。 如果 file 支æŒå呿Ÿ¥æ‰¾ï¼Œå¹¶ä¸” xml è§£æžå™¨ä½¿ç”¨è¯¥å‡½æ•°ï¼Œä½†æ˜¯æ´¾ç”Ÿç±»åž‹ network file å°è¯•å呿Ÿ¥æ‰¾æ—¶å¤±è´¥ï¼Œåˆ™ network file å°†è¿å该原则。

该原则与é¢å‘对象编程紧密相关,必须仔细建模ã€å±‚次结构,以é¿å…让系统用户混淆。

å‚è§ï¼š

接å£éš”离原则 (The Interface Segregation Principle)

ä¸åº”强制任何客户端ä¾èµ–于它ä¸ä½¿ç”¨çš„æ–¹æ³•。

SOLID 的第四个原则。该原则指出组件的消费者ä¸åº”该ä¾èµ–于它实际上ä¸ä½¿ç”¨çš„组件函数。

举一个例å­ï¼Œå‡è®¾æˆ‘ä»¬æœ‰ä¸€ä¸ªæ–¹æ³•ï¼Œè¯»å– XML 文档。它åªéœ€è¦è¯»å–文件中的字节,å‘å‰ç§»åŠ¨æˆ–å‘åŽç§»åŠ¨ã€‚å¦‚æžœç”±äºŽä¸€ä¸ªä¸Žæ–‡ä»¶ç»“æž„ä¸ç›¸å…³çš„功能å‘生更改(例如更新文件安全性的æƒé™æ¨¡åž‹ï¼‰ï¼Œéœ€è¦æ›´æ–°æ­¤æ–¹æ³•,则该原则已失效。文件最好实现 坿Ÿ¥è¯¢æµ 接å£ï¼Œå¹¶è®© XML 读å–器使用该接å£ã€‚

该原则与é¢å‘对象编程紧密相关,其中接å£ï¼Œå±‚次结构和抽象类型用于ä¸åŒç»„ä»¶çš„ minimise the coupling。 Duck typing 是一ç§é€šè¿‡æ¶ˆé™¤æ˜¾å¼æŽ¥å£æ¥å¼ºåˆ¶æ‰§è¡Œè¯¥åŽŸåˆ™çš„æ–¹æ³•ã€‚

å‚è§ï¼š

ä¾èµ–å转原则 (The Dependency Inversion Principle)

高级模å—ä¸åº”该ä¾èµ–于低级实现。

SOLID 的第五个原则。该原则指出,更高级别的å调组件ä¸åº”该知é“å…¶ä¾èµ–项的详细信æ¯ã€‚

举个例å­ï¼Œå‡è®¾æˆ‘们有一个从网站读å–元数æ®çš„程åºã€‚我们å‡è®¾ä¸»è¦ç»„件必须知é“下载网页内容的组件,以åŠå¯ä»¥è¯»å–元数æ®çš„组件。如果我们考虑ä¾èµ–å转,主è¦ç»„件将仅ä¾èµ–于å¯ä»¥èŽ·å–字节数æ®çš„æŠ½è±¡ç»„ä»¶ï¼Œç„¶åŽæ˜¯ä¸€ä¸ªèƒ½å¤Ÿä»Žå­—节æµä¸­è¯»å–元数æ®çš„æŠ½è±¡ç»„件,主è¦ç»„ä»¶ä¸éœ€è¦äº†è§£ TCPã€IPã€HTTPã€HTML 等。

è¿™ä¸ªåŽŸåˆ™å¾ˆå¤æ‚,å›?为它似乎å¯ä»¥å转系统的预期ä¾èµ–性(å›?此得å)。实践中,这也æ„味ç€ï¼Œå•ç‹¬çš„ç¼–æŽ’ç»„ä»¶å¿…é¡»ç¡®ä¿æŠ½è±¡ç±»åž‹çš„æ­£ç¡®å®žçŽ°è¢«ä½¿ç”¨ï¼ˆä¾‹å¦‚åœ¨å‰é¢çš„例å­ä¸­ï¼Œå¿…é¡»æä¾›å…ƒæ•°æ®è¯»å–器组件ã€HTTP 文件下载功能和 HTML å…ƒæ?‡ç­¾è¯»å–器)。然åŽï¼Œè¿™æ¶‰åŠè¯¸å¦‚ Inversion of Control å’Œ Dependency Injection 之类的模å¼ã€‚

å‚è§ï¼š

ä¸è¦é‡å¤ä½?自己原则 (The DRY Principle)

系统中,æ¯ä¸€å—知识都必须是å•ä¸€ã€æ˜Žç¡®è€Œæƒå¨çš„。

DRY 是 Do not Repeat Yourself 的缩写。这个原则旨在帮助开å‘人员å‡å°‘代ç?çš„é‡å¤æ€§ï¼Œå¹¶å°†å…¬å…±ä»£ç?ä¿å­˜åœ¨ä¸€ä¸ªåœ°æ–¹ã€‚最åˆç”±å®‰å¾·é²Â·äº¨ç‰¹å’Œæˆ´å¤«Â·æ‰˜é©¬æ–¯åœ¨ 1999 年出版的《程åºå‘˜ä¿®ç‚¼ä¹‹é“》中引用。

与 DRY 相å的是 WET(功能实现两次或者喜欢打字 Write Everything Twice or We Enjoy Typing)。

实际上,如果ä½?在两个或更多的地方有相åŒçš„功能,ä½?å¯ä»¥ä½¿ç”¨ DRY 原则将它们åˆå¹¶ä¸ºä¸€ä¸ªï¼Œå¹¶åœ¨ä»»ä½•ä½?需è¦çš„地方é‡å¤ä½¿ç”¨ã€‚

å‚è§ï¼š

KISS 原则 (The KISS Principle)

ä¿æŒç®€å•和直白。

KISS åŽŸåˆ™æŒ‡æ˜Žäº†å¦‚æžœå¤§å¤šæ•°çš„ç³»ç»Ÿèƒ½å¤Ÿä¿æŒç®€å•而éžå¤æ‚化,那么他们便能够工作在最佳状æ€ã€‚å›?æ­¤ï¼Œç®€å•æ€§åº”该是设计时的关键指æ?‡ï¼ŒåŒæ—¶ä¹Ÿè¦é¿å…ä¸å¿…è¦çš„夿‚度。这个短语最åˆå‡ºè‡ª 1960 年的美国海军飞机工程师凯利 · 约翰逊 (Kelly Johnson)。

这一原则的最好例è¯ä¾¿æ˜¯çº¦ç¿°é€Šç»™è®¾è®¡å·¥ç¨‹å¸ˆä¸€äº›å®žç”¨å·¥å…·çš„æ•…事。那时的他们正é¢ä¸´ç€ä¸€ä¸ªæŒ‘战,å³ä»–们å‚与设计的喷气å¼é£žæœºå¿…须能够让普通的机械师在战场上仅仅用这些工具进行维修,å›?此,“直白â€è¿™ä¸ªè¯åº”指的是æŸå的事物本身和修å¤ç”¨å·¥å…·çš„夿‚度两者之间的关系,而éžå·¥ç¨‹å¸ˆä»¬è‡ªèº«çš„能力水平。

å‚è§ï¼š

ä½?ä¸éœ€è¦å®ƒåŽŸåˆ™ (YAGNI)

这是 You Aren't Gonna Need It 的缩写。

åªæœ‰å½“ä½?éœ€è¦æŸäº›ä¸œè¥¿çš„æ—¶å€™ï¼Œæ‰åŽ»å®žçŽ°å®ƒä»¬ï¼Œè€Œä¸æ˜¯åœ¨ä½?预è§çš„æ—¶å€™ã€‚

Ron Jeffries 是æžé™ç¼–程的创始人之一以åŠä¹¦ç±ã€ŠExtreme Programming Installed》的作者。

æžé™ç¼–程原则告诫开å‘人员,他们应该åªå®žçް当剿‰€éœ€çš„功能,并é¿å…实现未æ¥éœ€è¦çš„åŠŸèƒ½ï¼Œä»…åœ¨å¿…è¦æ—¶æ‰å®žçŽ°ã€‚

éµå®ˆè¿™ä¸€åŽŸåˆ™å¯ä»¥å‡å°ä»£ç?库大å°ï¼ŒåŒæ—¶é¿å…时间和生产力浪费在没有价值的功能上。

å‚è§ï¼š

分布å¼è®¡ç®—的谬论 (The Fallacies of Distributed Computing)

英文维基百科

åˆç§° 网络计算的谬误,这是一系列关于分布å¼è®¡ç®—的猜想(或者看法),这些猜想å¯èƒ½ä¼šå¼•起软件开å‘中的失败。这些å‡è®¾æ˜¯ï¼š

  • 网络å¯é?
  • 延迟为零
  • 带宽æ—?é™
  • 网络安全
  • 拓扑æ’定
  • å•一管ç†å‘˜
  • è¿è¾“æˆæœ¬ä¸ºé›¶
  • ç½‘ç»œä¸ºåŒæž„çš„

å‰ 4 å„项目由 Bill Joy å’Œ Tom Lyon 于 1991 å·¦å³æå‡ºã€‚å¹¶è¢« James Gosling 首次归类于“网络计算的谬误â€ï¼›åŽ L. Peter Deutsch æ·»åŠ?了第 5ã€6ã€7 个谬误;90 年代末,Gosling æ·»åŠ?了最åŽä¸€ä¸ªè°¬è¯¯ã€‚

这些内容å—到了 太阳微系统 (Sun Microsystems) 内部当时所å‘生的事情的å¯å‘。

在设计弹性代ç?的时候,应该仔细考虑这些谬误,并å‡è®¾å…¶ä¸­ä»»ä½•一个谬误都å¯èƒ½å¼•起处ç†åˆ†å¸ƒå¼ç³»ç»Ÿçš„夿‚性和现实性时的逻辑缺陷。

å‚è§:

阅读清å•

如果ä½?觉得这些概念很有趣,ä½?å¯èƒ½ä¼šå–œæ¬¢ä»¥ä¸‹ä¹¦ç±ã€‚

在线资æº

一些有用的资æºå’Œé˜…读资料。

相关项目

TODO

å—¨ï¼å¦‚æžœä½?读到这里,点击了一个我尚未编写的主题链接,我感到很抱歉。这是正在进行中的工作ï¼

éšæ„ç»™ hacker-laws å’Œ hacker-laws-zh æ Issue 或者 Pull Request。

About

💻📖对开å‘人员有用的定律ã€ç†è®ºã€åŽŸåˆ™å’Œæ¨¡å¼ã€‚(Laws, Theories, Principles and Patterns that developers will find useful.)

Topics

Resources

License

Releases

No releases published

Packages

No packages published
You can’t perform that action at this time.