在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  Python/ 大家在python 中習(xí)慣分層嗎

大家在python 中習(xí)慣分層嗎

以前寫 java 習(xí)慣分三層,感覺特別好,但是現(xiàn)在寫 python,發(fā)現(xiàn)公司的代碼竟然沒有分層,由于年代久遠,不知道是 當(dāng)時寫 python 的人太菜,還是 python 本身沒有分層習(xí)慣。所以想問大家在開發(fā) python 項目的時候都用什么結(jié)構(gòu),
補充點:

  1. 比如 python 前端傳過來的參數(shù) ,有沒有校驗器,

  2. 路由權(quán)限問題,比去在 /user/ 下面只允許 登錄用戶訪問等,

  3. 比如 大家習(xí)慣不習(xí)慣寫 service 等。

可能大家沒有明白我意思。MVC 這種經(jīng)典的在應(yīng)用開發(fā)中都會用,不管是強的函數(shù)語言還是重的面向?qū)ο笳Z言。但是任何一種語言 都有自己經(jīng)典的風(fēng)格或者經(jīng)得起時間檢驗設(shè)計規(guī)則,比如 java view->controller->service->dao。
簡單點說,我現(xiàn)在寫 python 或者看別人寫的python 感覺代碼冗余太多,寫這不爽,完全沒有工程化語言的爽。所以想看看 python 大牛是怎么寫代碼的!

如果你實在不知道從何說起 那就回答上面幾個問題吧!

回答
編輯回答
撿肥皂

比如python 前端傳過來的參數(shù) ,有沒有校驗器,

Python 代碼菜。(當(dāng)然,硬要扣“檢驗器”這類概念,那就是“寫java的人菜”)

路由權(quán)限問題,比去在/user/ 下面只允許 登錄用戶訪問等,

準確說,路由不一定有權(quán)限,權(quán)限應(yīng)該是加在某個“合適的地方”。并且,權(quán)限本身也是“分層”的。這里的設(shè)計,是根據(jù)業(yè)務(wù),根據(jù)代碼組織方式來看的。

比如 大家習(xí)慣不習(xí)慣寫service等。

寫 java 的人菜。(不能說菜,只能說,沒理解本質(zhì))

2017年6月2日 00:11
編輯回答
孤島

python+django 應(yīng)該是MTV模式的(相當(dāng)于java的MVC):model template view。
至于項目架構(gòu)、代碼邏輯,確實是反應(yīng)一個程序員能力的地方,很少有人寫的代碼能被大多數(shù)人接受。因為每個人都或多或少有自己的開發(fā)習(xí)慣,大多數(shù)人拿到別人的代碼,第一感覺通常都是:這都寫的啥玩意,這么亂呢。

2017年3月24日 07:54
編輯回答
網(wǎng)妓

分層跟語言沒有關(guān)系,這是一種軟件思想,分層可以達到高內(nèi)聚,低耦合的效果

一般項目中至少得分兩三層,比如第一層controller,第二層service,第三層db,這個得看具體項目,怎么分視場景和技術(shù)leader而定,反正是很靈活的

2018年2月26日 11:09
編輯回答
傲寒

我用Python都是做數(shù)據(jù)分析,不需要分層……

2017年8月16日 16:39
編輯回答
爛人

曾經(jīng)有一個項目的小伙伴使用service層,因為他之前是一個java程序員。

但是自己認為的加一層其實效果并不是特別好。

我個人感覺沒有必要。

另外,django的管理器用來處理表一級的結(jié)構(gòu),model處理記錄級的結(jié)構(gòu)沒什么問題,我覺得挺好。當(dāng)然,我沒做過特別大的系統(tǒng)。

2017年3月27日 07:44
編輯回答
遲月

除非你從零開始,不然類似于django,flask之類的框架其實結(jié)構(gòu)已經(jīng)幫你搭好了,或者一些第三方的plugin也能輔助解決問題。pyhton牛逼的地方就在于你可以一直站在巨人的肩膀上,比如pypi,如果一定要自己來,那就得視具體情況而定了,在最早寫python的時候?qū)懙膩y很正常,因為不知道有更簡潔的語法或者已經(jīng)很成熟的第三方庫,重構(gòu)永遠都是進行中的日常

關(guān)于你補充的幾點:這些和python語言沒有半毛錢關(guān)系,頂多只能說框架本身的問題或者是寫代碼的人的習(xí)慣風(fēng)格,如果你看深入了解python的web框架,你會發(fā)現(xiàn)分為lightweighted或full-stack,輕量級顧名思義缺少一些附加功能,全棧則一定能滿足你的要求。python有個笑談:基于pyhton的web框架比python的關(guān)鍵字都多。所以你的補充點,我覺得只是不熟悉罷了。如果真有這么多問題,instgram,dropbox等等的公司肯定更著急

2018年5月30日 10:14
編輯回答
寫榮

首先回答樓主的幾個問題,由于django用的比較多,先從django說起。
1、現(xiàn)在常用的py web框架有django、flask、tornado等,django是遵循MTV設(shè)計的,Model是做所有db相關(guān)的業(yè)務(wù),比如ORM等。T是template,template意思是前端展示模塊,主要是一些js css static html模版靜態(tài)資源,而你view層就是業(yè)務(wù)層,你可以在view層寫邏輯代碼,設(shè)計到數(shù)據(jù)庫查詢或者數(shù)據(jù)過濾的全部走model,你談到的校驗,其實是放在model層可以做的,比如django提供了form組件。
2、你說的應(yīng)該是路由的權(quán)限如何細粒度控制,可以參考django-rest-framwork框架,里面關(guān)于permission這塊已經(jīng)比較完善了
3、django框架里是沒有service層的,本身django的設(shè)計就是快速、敏捷開發(fā)而生,他的model和view的解耦幾乎沒有考慮,因為在開始之初就已經(jīng)設(shè)計了多app支持,如果你有其他事物可以單獨建立app,所以在model的通用性看來,django的確是沒有做到很好。
說一個現(xiàn)身例子,以前組里沒有充分重視這個設(shè)計,隨著app增多,開發(fā)人員增多,就發(fā)現(xiàn)很多混亂的地方,現(xiàn)在已經(jīng)努力將MTV模式盡量改成MVC模式。
望采納,謝謝!

2017年10月29日 04:55