PS:再次說明一下,原本不想寫的太啰嗦的,可之前那個系列發佈後發現,好多朋友都想馬上拿到代碼立即能上手開發自己的項目,對代碼結構、基礎常識、分類目錄與文件功能結構、常用函數......等等什麼都不懂,然後就想使用,我真的很無語,還有一些朋友有十幾年開發經驗也會問一些很基礎的問題,我都不知道怎麼回答了 ...
PS:再次說明一下,原本不想寫的太啰嗦的,可之前那個系列發佈後發現,好多朋友都想馬上拿到代碼立即能上手開發自己的項目,對代碼結構、基礎常識、分類目錄與文件功能結構、常用函數......等等什麼都不懂,然後就想使用,我真的很無語,還有一些朋友有十幾年開發經驗也會問一些很基礎的問題,我都不知道怎麼回答了。一下子拿到整個項目的代碼,初學者要上手並不是那麼容易的事情,很多代碼經過層層封裝後,反覆跳轉調用,不弄暈就很不容易了,所以得一步步來,瞭解整個代碼的發展歷程,知道它是怎麼變化的,瞭解常用代碼函數的使用方法,這樣才能快速上手,游刃有餘。
過了兩天,小白與老菜在公司加完班後,小白看到老菜準備走人,趕緊逮著機會走了過去。
小白:老大有空嗎?想和您再聊一會,請教幾個問題?
老菜:哈哈...有什麼問題說來聽聽。
小白:按您上次說的準備工作基本都準備好了,包括開發環境、前端頁面、資料庫設計等,現在就要進入編碼階段了,上次講的文件分類擺放什麼的不太明白,為什麼要這麼做?還有就是我沒有積累過各種常用工具函數,能否發幾個給我?
老菜:工具函數回頭髮給你,對於文件分類擺放我再細說一下。
我與很多開發人員合作過,由於不少程式員對項目文件的分類管理不太重視,所以開發一段時間以後,就會發現整個項目變得很亂很難管理,大家根據自己的喜好隨便創建目錄,而各個程式文件也沒有分類放到對應的文件夾里,另外由於大家沒有查看別人代碼的習慣且文件管理混亂,同樣的功能經常會自己寫自己的,造成重覆開發。時間久了以後需要對項目進行維護時,就是各種找,項目小問題還不大,項目大時程式文件比較多要修改一個bug都很麻煩。所以在開發前,大家需要先約定好項目結構說明,這樣大家在開發時都會分門別類的在對應分類文件夾里創建程式文件,且程式文件命名都使用統一的規範,可讀性強,大家理解起來也容易。
比如說我常用的項目結構:(如下圖)
api | 介面api文件夾 |
common | 工具函數文件夾 |
config | 配置文件夾 |
external_interface | 外部介面調用文件夾 |
log | 日誌文件夾 |
logic | 邏輯層文件夾 |
service | python服務 |
static | 靜態文件夾 |
test | 測試文件夾 |
main.py | 程式主文件 |
有了約束後,相關開發人員清楚各個目錄功能,就很容易找到自己想要的代碼或函數,同時也知道要添加的文件或函數往哪裡加。
比如說管理員管理表(manager),我們一般介面文件名會用這個表名來命名:manager.py,針對這個表進行的查詢、添加記錄、修改記錄、刪除記錄和其他操作,這些功能函數都會放在manager.py中,方便出現異常時定位查找。
工具函數文件必須使用功能名稱的英文名來命名,一般我還會加上尾碼_helper來進行區分,讓大家一看到這個文件就知道他是common里的工具函數文件,比如:datetime_helper.py(日期操作包)、db_helper.py(資料庫操作包)、log_helper.py(日誌操作包)等。邏輯層文件名,我會添加尾碼_logic,python服務文件會添加尾碼_service,測試類文件會添加尾碼_test來區分文件功能。當然不添加尾碼或用其他約定好的首碼或尾碼名都可以,只要大家遵循統一的約束,開發起來就會輕鬆多了。
另外,由於python的url路由和.net、php的不一樣,不是用文件名來做為訪問路由的,而是在文件中自定義的,所以在命名上也是要遵循一定的約束,這樣管理起來才比較容易。現在比較流行RESTful風格的介面(路由),你可以嘗試一下用這個小項目練練手,熟悉一下。
關於RESTful的說明網上有太多文章了,這裡就不再細說它的定義。那麼使用它有什麼好處呢?我個人覺得使用這種url設計風格,最大的好處就是我們不用再為url起名而苦惱了(哈哈...說笑的...),RESTful風格設計的url結構清晰,讓人容易理解每個url的作用,擴展起來也方便。
那麼我們來說說怎麼用它來設計url。首先url名稱上儘量使用名詞,不要用動詞,比如對管理員表進行操作,url設計不要用add_manager、edit_manager等方式;對資源的操作,我們使用HTTP協議里的動詞來實現。
GET:獲取資源
POST:創建資源
PUT:更新資源
DELETE:刪除資源
例如:
獲取管理員列表:GET http://127.0.0.1/manager/?page=0&rows=20&sidx=id&sord=desc
添加管理員:POST http://127.0.0.1/manager/
修改id為1的管理員記錄信息:PUT http://127.0.0.1/manager/1/
獲取id為1的管理員記錄信息:GET http://127.0.0.1/manager/1/
刪除id為1的管理員記錄:DELETE http://127.0.0.1/manager/1/
啟用或禁用id為1的管理員記錄:PUT http://127.0.0.1/manager/1/enable/ (啟用) PUT http://127.0.0.1/manager/1/disable/ (禁用)
當然,為了讓url更清晰,有時還會添加一些分類類別(也有可能是多級分類),比如前後端介面區分,會在manager前增加manage或admin,例如:GET http://127.0.0.1/manage/manager/(獲取後臺管理系統的管理員列表)
好了,你自己上網去查查相關資料,如果不會的話參考我給你的demo,照著複製粘貼就可以了,只有動手做多了,坑踩多了就理解了。趕快去嘗試一下吧,只有使用過你才能真正理解它的用法與好處。
作者:AllEmpty
出處:http://www.cnblogs.com/EmptyFS/
有興趣的朋友可以加加python開發QQ群:669058475,大家一起探討。大家有問題的話可以在群里發問,當然我平時工作也非常繁忙不一定會及時回覆。
本文為AllEmpty原創,歡迎轉載,但未經同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。