|
我在做什么
曾經(jīng),我試過接到一些需求。一眼帶過后,腦袋馬上隨著高昂的斗志沉溺在代碼的世界中 ,馬不停蹄地敲著鍵盤直到最后測試的完成。我從思緒中恢復(fù)過來,乍一看自己寫的功能,和需求差了十萬八千里,我TM都在干嘛?
除此之外,我還見過類似的很好笑的事情。有一個(gè)程序員,經(jīng)理提了需求,然后他在那里折騰了一天。結(jié)果不但沒做出來,而且和實(shí)際需求都是完全搭不上調(diào)。經(jīng)過詢問發(fā)現(xiàn),他不知道經(jīng)理說了什么,也不知道自己到底在做什么。
代碼的世界可能是昏天暗地的,但是我們的思維不能這樣隨之混亂,否則一切都會前功盡棄。所以我現(xiàn)在編寫程序的時(shí)候,經(jīng)常會想一下:我要做什么,我在做什么。更好的方法是把詳細(xì)需求落實(shí)到文檔,并時(shí)刻核對文檔。
大局為重
2-8法則告訴我們,一個(gè)項(xiàng)目核心的功能只有很少,其它大部分都是對核心功能輔助或增強(qiáng)的。但當(dāng)任務(wù)分發(fā)下來,我手頭總有一些自己很想開發(fā)的模塊,不過它們不屬于那20%。我以前經(jīng)常會在這些感興趣的模塊上花費(fèi)很多時(shí)間和精力。
結(jié)果項(xiàng)目快要到上線期限,主要的功能卻沒開發(fā)完成,其它一些不起眼的功能卻做得很好,但為此項(xiàng)目不得不延期了。如果反過來,只要對整體功能預(yù)期不會有太大偏差,可以將就的先上線。重要一點(diǎn)是:即使功能還有遺漏,但項(xiàng)目可以上線了,老板自然不會太追究,自己工作也能圖個(gè)安心。如果不知道那些功能模塊是最重要的,先問問經(jīng)理。
人總是喜歡做一些自己感興趣或者有挑戰(zhàn)的事。不過在這方面,為了項(xiàng)目和團(tuán)隊(duì)著想,應(yīng)該盡量壓制這種誘惑。
性能永遠(yuǎn)不是優(yōu)先考慮的問題
我從來不會一開始就考慮性能問題。如果項(xiàng)目成本很低,甚至到項(xiàng)目結(jié)束時(shí),如果沒有感覺到明顯的性能問題,也不會去管。要知道現(xiàn)在已經(jīng)不是DOS的年代,CPU的計(jì)算能力很高,但成本很低了。重要一點(diǎn)是,如果只針對提升性能對代碼做改動,很容易破壞代碼的復(fù)用性和可維護(hù)性。而返過來,提高了代碼的復(fù)用性和可維護(hù)性,則很容易提高性能。
下面有一個(gè)php的代碼實(shí)例,功能是幫助用戶重置密碼(代碼為了簡單說明問題,請不要太在意一些無關(guān)的細(xì)節(jié))
requestResetPassword是接收用戶重置密碼的請求并且做了相應(yīng)的檢查。為了更好的復(fù)用性,我將重置密碼的操作單獨(dú)分配到一個(gè)新的resetPassword的函數(shù),更改完密碼的后再調(diào)用sendEmail向用戶發(fā)送一封通知郵件。
01 /**02 * 用戶請求重置密碼的接收器03 */04 function requestResetPassword() {05 //檢查用戶是否存在06 if( !checkUserExists( $_GET['userid'] ) ) {07 exit('抱歉,用戶不存在,請確認(rèn)用戶帳號。');08 }09 resetPassword( $_GET['userid'] );10 //最后向用戶發(fā)送一封郵件11 sendEmail( $_GET['userid'], '重置密碼成功', '新的密碼是xxxx' );12 exit('新密碼已經(jīng)發(fā)送到你的郵箱。');13 }14 15 16 /**17 * 幫助用戶重置密碼18 */19 function resetPassword( $userid ) {20 //檢查用戶是否存在21 if( !checkUserExists( $userid ) ) {22 return false;23 }24 25 //進(jìn)行重置用戶密碼的操作26 //略...27 return true;28 }29 30 31 /**32 * 向用戶發(fā)送一封郵件33 */34 function sendEmail( $userid, $title, $content ) {35 //檢查用戶是否存在36 if( !checkUserExists( $userid ) ) {37 return false;38 }39 40 //發(fā)送郵件操作41 //略...42 return true;43 }44 45 46 /**47 * 檢查某個(gè)用戶是否存在48 */49 function checkUserExists( $userid ) {50 $user = getUserInfo( $userid );51 return !empty( $user );52 }53 54 55 /**56 * 獲取某個(gè)用戶的數(shù)據(jù)57 */58 function getUserInfo( $userid ) {59 //假設(shè)我有一個(gè)query的函數(shù),它用來查詢數(shù)據(jù)庫并返回?cái)?shù)據(jù)60 $user = query( "SELECT * FROM `user` WHERE `uid`=" . intval( $userid ) );61 return is_array( $user ) ? $user : array() ;62 }
it知識庫:我現(xiàn)在是這樣編程的,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。