close

序言

最近在做一個項目,需求很簡單,但是細節比較多!從開發中,領悟到一些東西與大家分享。


排程

PM(產品經理)需求
1.綁定某個手機終端
2.解綁某個手機終端
3.解綁某個用戶的所有手機終端
4.查詢某個用戶的綁定設備資訊

已經給了你這樣的需求,那麼接下來要做什麼?PM當然會詢問排程。如果讓你排程,你會給幾天時間?你怎麼考慮的排程?

反正讓我排程,我排不出來。於是接下來我要做的是拿出我的xmind軟體,在跟PM確認需求,定方案

後來我又問了一個細節,新功能變數名稱service.xx.com是否已經有了?PM告知無,所以需要走申請流程1d。——最後的時間定位1周(5天)時間。


環境

是部署在新 網頁設計 伺服器上?還是部署在舊的網頁設計伺服器上?

有人會問,這有區別嗎?——當然是有區別的,如果是新網頁設計伺服器,給了你更大的空間。比如對於php來說,你可以選擇更高的版本,可以選擇更好 的框架(Zend Framework),但是對於舊環境,那你的框架就受到限制了。如:你要看舊的網頁設計伺服器上的php版本,是否在舊的網頁設計伺服器上有好的php 框架。

後來的方案是,在舊的網頁設計伺服器上添加個虛擬機。舊的網頁設計伺服器上php程式碼是面向過程寫的(是java程式師寫的),所以我決定使用好 的php框架,便於後期維護和擴展,故嘗試著使用zend framwork框架,但是經常性的報一些受php版本限制的錯誤。嘗試了好幾個版本的zend framework,最終放棄使用zend framework。選擇了Thinkphp框架。——這已經費了小半天的時間。


資料庫設計

在設計表的時候你會想什麼?

第一、表結構肯定是首選了。(是用int型還是varchar型,如狀態欄位的類型選擇,我選擇了tinyint(1),也可以使用enum)

第二、欄位命名。好的命名能讓開發者一目了然,加深你對系統的瞭解。

第三、表引擎的選擇。是用MyISAM呢,還是Innodb?你知道這兩個表的區別嗎?——我選擇了Innodb。

第四、索引。這個初期你最好不要事先進行設計,我是在程式碼成形的階段,才開始加的。

第五、註解。你習慣在建欄位的時候加comment嗎?如果你經常用desc table_name命令查看表結構的話,那你肯定覺得沒什麼用?我經常是用show create table table_name看表結構的,註解一目了然。


開發階段

程式碼是個精密工作,那麼在程式碼開始階段你要做什麼?不會是著急把程式碼寫好吧?

我考慮的是:

第一、乾淨的程式碼;

框架:能讓你的程式碼結構很整齊,我用的是Thinkphp,也是第一次使用。先找到官方的文檔,記住不要一次性想把整個文檔看完,我是邊用邊看的方式進行的。開始階段主要看的地方是:mvc結構;

好的命名:不要用自己習慣的命名方式,要以框架的命名方式去程式碼,要不然其他coder也習慣用自己的命名方式去coding,那麼程式碼看起來就沒那麼乾淨了。

第二、傳入參數的校驗;

通過業務,你要確認,你的系統將會接受什麼樣的參數?

int型的是最讓我舒服的,不會引起什麼SQL注入,XSS問題,直接用intval強類型轉換。

最讓人頭痛的就是字元型,考慮很多方面,SQL注入,XSS攻擊等。對於SQL注入,我仔細看了一下Thinkphp的文檔,只要你用陣列傳遞參數 給指定的類,你就不用擔心SQL注入的問題(這也是用框架的好處)。xss攻擊:利用php的htmlspecialchars, 把字元轉成html結構的字元。

第三、更新、插入操作;

1、事務:優點是插入和更新時保證資料的一致性、原子性、隔離性、持久性;但是也有一個問題,會有鎖行記錄的問題。

2、在更新和插入之前,你做了查詢嗎?就是判斷是否有這條記錄。

第四、日誌;

1、線上程式碼出問題,你是怎麼定位問題的?很多時候,有些問題,你是無法在開發機和測試機器上複現出來的。我的辦法就是日誌。

2、安全性:你的日誌是否有安全漏洞(把公司內部的資訊暴漏到日誌裏)?那你怎麼控制的?——一個辦法就是設置日誌級別,thinkphp框架自身就有日誌級別。

3、方便性:你的日誌打出來之後,你能找到問題嗎?

原來的做法:程式讀到日誌中斷點的位置的時候,就把日誌追加到日誌檔裏。——問題來了,當有一些併發的時候,日誌裏會把很多請求的日誌交錯的打到檔裏,查詢問題非常不方便。

thinkphp給出的做法(不錯的做法):本身也有上面的做法(原來的做法);新學到的招數是,把日誌內容一行一行的放到記憶體裏,最後結束的時候,一次性打到日誌檔裏。

4、錯誤碼;你的錯誤碼是什麼樣的?你設計過嗎?是否成功就0,錯誤就<0,錯誤碼挨著往下出溜。最好有個統一的規範。

5、開發文檔

你有寫文檔的習慣嗎?很多程式師跟我說,寫文檔太費時間了,我個人是習慣邊寫程式碼邊寫文檔.你的文檔用什麼寫?我早期習慣在公司的系統上寫,但是發現速度很慢,而且查某個點的時候,比較麻煩,所以我習慣用word編寫。

文檔有什麼用?

1>是容易讓我理解程式碼;

2>是後期維護方便;這系統不是寫完了就了事的,後期還需要你維護,或者給別的程式師維護。

3>是你寫的介面是給人調用的,你怎麼告訴調用者你的介面形式?我比較懶,直接把文檔交給他,省事了。如果他有些地方看不懂,那就說明,你沒理解或者你沒寫清楚,一方面加深你對系統的理解,另一方面也能增加你寫文檔的功底;


結論

寫程式碼真的很不容易,有很多方面你要考慮的。如果你有更好的意見,請多多指教!

 


轉貼來源:網頁設計知識分享部落格

http://www.piece2ec.com.tw/news.asp?ID=1877

 

 


參考文獻:

1.林宥吟,2002,延伸性企業報告語言之產業應用-以資產管理產業為例,私立中原大學會計系碩士班未出版論文。

2.李果益,2001,JAVA 技術手冊,台北:美商歐萊禮股份有限公司台灣分公司。

3.易芙瑛,2002,影響企業導入可延伸性企業報告語言(XBRL)之因素探討,私立中原大學會計系碩士班未出版論文。




arrow
arrow
    全站熱搜
    創作者介紹
    創作者 巨群資訊 的頭像
    巨群資訊

    巨群資訊

    巨群資訊 發表在 痞客邦 留言(0) 人氣()