成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

成為更優秀的程序員:退后一步看問題

移動開發
請把下面的[客戶]、[老板]或其它任何東西換成你想要的名稱。 一天,在工作中 Bug #3890 來自客戶: 有個程序出現了錯誤,程序提示說SpeedCalculator::compute()里出現了除零情況。

 

[[117718]]

請把下面的[客戶]、[老板]或其它任何東西換成你想要的名稱。

一天,在工作中

有個程序出現了錯誤,程序提示說“SpeedCalculator::compute()里出現了除零情況”。

請盡快修復!

你打開SpeedCalculator.php,發現:

  1. public function compute() { 
  2.     return $this->distance / $this->time; 
  3. }

修復bug

簡單!是誰寫的這段代碼,他怎么不用一點腦子!

  1. public function compute() { 
  2.     if ($this->time == 0) { 
  3.         return 0; 
  4.     } 
  5.     return $this->distance / $this->time; 
  6. }

你就這樣修改完了,這個bug只用了你2分鐘。

后來,同樣的bug又出現在了RatioCalculator和MoneyCalculator中,當把它們也修正后,團隊中的所有人都認為,再也不會有這樣的問題出現了,這是最后一次!代碼現在又是堅固無比了!

一個月后,另外一個bug出現了。這次程序沒有崩潰,但客戶在報表中發現了錯誤的計算結果,是因為那句return 0;的代碼修改。

退后一步看問題

如果,我們不是匆匆忙忙的修改,而是退后一步,以更寬廣的視野看待些問題。

為什么這種事情會發生?

因為$this->time被賦值成 0.

簡單!讓我們阻止這種事情發生。

  1. public function setTime($time) { 
  2.     if ($time == 0) { 
  3.         throw new InvalidArgumentException("Invalid value"); 
  4.     } 
  5.     $this->time = $time; 
  6. }

這樣,修改的效果不是更好嗎?你保證了數據的正確性。但這樣客戶并不是很高興,因為當他輸入0時,程序會跳到一個錯誤頁面。

那么,你應該在控制層捕捉這個錯誤,讓用一個漂亮的錯誤頁面顯示它們。

當做完了這些,你認識到,在RatioCalculator和MoneyCalculator中,你也應該這樣做,于是你拷貝/張貼,修改了它們兩個。

稍等一下,客戶更喜歡讓錯誤信息顯示成橘黃色的,而不是紅色的。于是,你再次拷貝/粘貼,再次修改一遍。

再退后一步

如果,我們不是修復這個不過,而是發現了一個普遍的要求?

為什么客戶會輸入 0 ?因為他犯了個錯誤。

這對我們的要求是什么?

1. 我們只需要這次防止用戶輸入 0 來避免“speedCalculationForm = 0”嗎?

2. 我們只需要讓“speedCalculationForm”里的數據合法就行了嗎?

3. 還是,我們要對所有的用戶輸入繼續校驗?

為什么不開發一個校驗工具包呢?

且慢!不要自己去開發一個!請退后一步想想,深呼吸,去使用現有的第三方校驗框架。

關于需求

我們,程序員,熱愛計算機技術。當你的客戶或老板,大聲的脫口說出他們想要的東西時,我們無法阻止,我們只能想象如何去實現它們。

但是,我們需要用更全面的眼光看問題。如果我們想對自己的工作更負責,我們應該去理解為什么他們會提出這樣的需求,而不是著急著去尋找解決方案。當然,這可能會占用你更多的精力。

是客戶真的需要“一個會躲避鼠標點擊的閃光的按鈕”嗎?還是他們需要的是另外一個功能——他們不了解的功能,需要你去幫他們定義的功能?這種事情同樣會發生在你自己身上!你真的需要用程序打開一個文件,往里面寫入一些信息嗎?還是,你真正需要的是一個日志系統?

退后一步看問題,看更大的藍圖、更完整的信息。雖然你是一個很優秀的編程高手,但編程的目的是為了解決問題。

本文鏈接:http://www.cocoachina.com/gamedev/misc/2014/0807/9329.html

責任編輯:chenqingxiang 來源: cocoachina
相關推薦

2014-08-05 09:15:55

程序員

2012-12-28 09:58:50

程序員代碼編程

2016-03-28 10:01:45

優秀程序員關鍵閱讀

2016-03-04 11:06:20

更優秀程序員

2017-10-22 16:16:03

程序員編程代碼

2021-02-05 14:56:39

YouTube編程程序員

2015-08-03 09:09:20

程序員腦子快

2014-03-03 15:32:32

程序員資源

2015-11-06 14:54:10

程序員習慣

2020-05-07 15:14:10

程序員技能開發者

2009-07-02 09:42:34

JSP程序員

2010-12-27 09:24:45

JSP程序員

2017-09-21 09:44:00

編程程序員軟件開發

2011-05-03 08:54:36

2016-01-29 10:03:43

優秀程序員黃金法則

2009-07-24 13:09:57

ASP.NET程序員

2014-12-22 09:59:05

程序員

2021-01-03 15:07:16

開發編程語言后端.

2016-04-21 17:50:26

程序員優秀程序員

2017-11-14 21:30:15

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩欧美在线精品 | 亚洲成人免费在线 | 国产精品久久久久久久久动漫 | 丁香一区二区 | 久久久久成人精品 | www.久| 搞黄网站在线观看 | 亚洲欧美日韩在线一区二区 | 在线观看日本网站 | 欧美精品一二区 | 国产精品免费视频一区 | 国产精品一区二 | 午夜影院网站 | 欧美日韩综合一区 | 欧美一区二区大片 | 国产中文字幕在线 | 国产精品久久久久一区二区三区 | 欧美视频在线播放 | 福利国产 | 欧美精品电影一区 | 超碰在线播| 亚洲国产精品人人爽夜夜爽 | 亚洲一区高清 | 天天摸天天看 | 91视频大全 | 午夜寂寞福利视频 | 免费观看一级特黄欧美大片 | 九九热免费视频在线观看 | 日韩中文字幕免费在线观看 | 久久久国产一区二区 | 一区二区三区欧美在线 | 精品国产乱码久久久久久影片 | 99精品电影 | 国产欧美一区二区三区在线播放 | 国产免费一区二区 | 国产专区在线 | 日日噜噜噜夜夜爽爽狠狠视频, | 精品三级在线观看 | 久久久久亚洲精品 | 日本久久www成人免 成人久久久久 | 午夜在线小视频 |