抽象封裝以及分層的思考

? ? 經(jīng)過一段時(shí)間的flask框架學(xué)習(xí)样勃,對(duì)于抽象和分層思想有了一定的理解伪窖,而對(duì)其進(jìn)行的一系列思考讓我開始思考分層治理碍拆,抽象思維的思考方式和對(duì)項(xiàng)目的管理理念若治。

box

(不懂的也可以看看,不復(fù)雜)

從web網(wǎng)站數(shù)據(jù)庫看抽象:

web

? ? 從flask的web開發(fā)網(wǎng)站看感混,分層和抽象不僅僅體現(xiàn)在代碼上端幼,更是體現(xiàn)在整個(gè)項(xiàng)目:

? ? ? ? ①項(xiàng)目組成部分命名及類調(diào)用清晰

? ? ? ? ②數(shù)據(jù)庫的管理安全,防止了誤操作

? ? ? ? ③網(wǎng)站結(jié)構(gòu)清晰弧满,各“部門”分工明確

一婆跑、項(xiàng)目組成部分命名及調(diào)用清晰:

? ? 主要是體現(xiàn)在,引用新的庫后庭呜,對(duì)其進(jìn)行了再命名或者嚴(yán)格大小寫洽蛀。一眼就能看出是類對(duì)象還是方法對(duì)象,例如使用駱駝命名疟赊,或者大小寫命名郊供,以及再命名使易于辨識(shí)。

? ? 其次是如果有新的可以分層和抽象的對(duì)象近哟,就一定會(huì)新建一個(gè)對(duì)象驮审,使得修改代碼非常簡(jiǎn)單:

? ? 舉例來說,網(wǎng)站的用戶有不同的角色(例如管理員,普通用戶疯淫,協(xié)管員地来,匿名用戶),每個(gè)角色有不同的權(quán)限(例如管理整個(gè)網(wǎng)站熙掺,寫文章未斑,評(píng)論他人文章,贊他人币绩,處理刪除他人文章)蜡秽,在設(shè)計(jì)上有角色這個(gè)概念,則在代碼中缆镣,用不同的權(quán)限組合出一個(gè)元組芽突,對(duì)應(yīng)一個(gè)角色名。那么在給用戶賦予權(quán)限的時(shí)候董瞻,直接賦給他對(duì)應(yīng)的角色就行了寞蚌。這樣做的另一個(gè)好處是,當(dāng)需要添加新角色時(shí)钠糊,只需用權(quán)限組合出一個(gè)新角色就行了挟秤。

? ? 即角色=職業(yè),用戶=玩家抄伍,權(quán)限=技能煞聪,可以輕松的用技能組合出一個(gè)新職業(yè),管理玩家的職業(yè)比管理一大堆技能要容易得多逝慧,這種盡量分層來使管理清晰的方法,細(xì)想意義非凡啄糙。

二笛臣、數(shù)據(jù)庫的管理安全,防止了誤操作

SQL

? ? 這個(gè)做法在很多大型公司已經(jīng)是共識(shí)了隧饼,不管是mysql還是sql server等等數(shù)據(jù)庫沈堡,它們的增刪修改等操作都十分多樣,語言復(fù)雜燕雁,如果在刪除和修改的時(shí)候誤操作了诞丽,或者操作時(shí)出現(xiàn)了前后操作不完整引起數(shù)據(jù)錯(cuò)誤,對(duì)于數(shù)據(jù)庫的影響是很大的拐格,畢竟數(shù)據(jù)量一上來僧免,數(shù)據(jù)庫錯(cuò)誤排查是很困難的。

? ? 那么捏浊,就要在糧庫的入口處嚴(yán)厲把關(guān)懂衩,在中間設(shè)一個(gè)檢查站,對(duì)于數(shù)據(jù)庫的操作都必須通過這個(gè)檢查站規(guī)定的方法來操作。具體在代碼上的實(shí)現(xiàn)浊洞,就是將幾個(gè)數(shù)據(jù)庫操作語言組合并封裝成一個(gè)類方法并提供接口操作牵敷,不符合規(guī)范的報(bào)錯(cuò)且不執(zhí)行,保持?jǐn)?shù)據(jù)庫的安全法希。

? ? 舉例:

? ? ? ? --類方法:新增一個(gè)用戶

? ? ? ? --數(shù)據(jù)庫操作語言:增加一個(gè)用戶枷餐,默認(rèn)主鍵遞增,默認(rèn)下為匿名苫亦,寫日志毛肋。。著觉。村生。。饼丘。

? ? ? ? 這個(gè)類方法提供接口趁桃,那么在新增用戶的時(shí)候,只能通過這個(gè)類方法來添加這個(gè)用戶肄鸽,就保證了數(shù)據(jù)庫安全卫病,這個(gè)類方法不僅審核了信息,還規(guī)范了操作典徘,后臺(tái)程序員不需要懂?dāng)?shù)據(jù)庫操作語言蟀苛,也可以增加用戶。所以封裝在一定程度上使得分工明確逮诲,也減少了因程序員誤操作造成的數(shù)據(jù)錯(cuò)誤帜平。

三、網(wǎng)站結(jié)構(gòu)清晰梅鹦,各“部門”分工明確

? ? 這個(gè)是很常規(guī)的代碼管理裆甩,對(duì)于各個(gè)不同的模塊,進(jìn)行清晰的命名和分類齐唆,建立文件夾css存放css文件嗤栓,建立templates文件夾存放網(wǎng)站html模板代碼,創(chuàng)建db_respository文件夾存放數(shù)據(jù)庫遷移倉庫箍邮,建立requirements.txt文件保存所需環(huán)境和庫的版本以便在異地重建環(huán)境茉帅。

? ? 但我覺得很重要的是,這些思維當(dāng)初是如何產(chǎn)生锭弊,并一步步形成目前的項(xiàng)目管理思維的堪澎,從管理問題出現(xiàn),到思考一個(gè)web網(wǎng)站的組成部分味滞,到哪些部分是大類全封,到哪些模塊重要到需要單獨(dú)建立文件夾,到各個(gè)模塊之間的連接和引用刹悴,細(xì)繪制一張圖的話,我認(rèn)為能得到代碼之外的子房,對(duì)信息管理和分類的一種思維模式。(現(xiàn)在圖未繪完就轧,以后有機(jī)會(huì)發(fā)文補(bǔ)上)


跳出代碼看封裝和分層思想:

? ? 將復(fù)雜的東西通過抽象和分層簡(jiǎn)單化证杭,使得不熟悉的人和很久沒使用后的自己能夠很快的熟悉操作妒御,使得一件完整的事情在操作中可以按層級(jí)推進(jìn)蓝晒、減少出錯(cuò)以及記錄責(zé)任歸屬辆床。

? ? 思考到對(duì)任何項(xiàng)目管理死宣,

? ? ①例如土木工程制圖CAD,相同的線條和轉(zhuǎn)角惋啃,可以建立模塊哼鬓,對(duì)畫圖處直接放置模塊,放置下的對(duì)象的共同的父類是這個(gè)模塊边灭,那么一旦涉及到圖案某個(gè)參數(shù)的修改,對(duì)這個(gè)模塊的所有子類來說绒瘦,只需要修改這個(gè)父類模塊的數(shù)據(jù),就修改了所有的圖案惰帽。進(jìn)一步的看,對(duì)于整個(gè)CAD圖,在工程量變大以后频轿,以模塊化的管理來繪圖,不管是查看簡(jiǎn)單航邢,修改也會(huì)簡(jiǎn)單很多倍。

? ? ②例如對(duì)于人事和項(xiàng)目管理操骡,一個(gè)部門做好相關(guān)的“接口”,例如一個(gè)報(bào)銷賬目流程册招,對(duì)每一步都要求記錄來到人員和操作,嚴(yán)格按照層級(jí)操作虑鼎,那么出現(xiàn)問題键痛,有綜可循,責(zé)任歸屬明確絮短,并且不同部門和項(xiàng)目成員不用理解另一個(gè)部門的情況,只需要按照部門要求操作杉允,也能順利完成整套項(xiàng)目流程限府。

? ? 分層和封裝不僅是一種編程術(shù)夺颤,更是軟件開發(fā)者多年以來總結(jié)出的思維方法胁勺,跳出代碼本身,從整體上來看分層和封裝抽象寥裂,不管是什么行業(yè)什么項(xiàng)目案疲,都還有很多的可以應(yīng)用的地方

? ? 不看細(xì)節(jié),難以落地為術(shù)褐啡,不看宏觀,難以上升為道低飒,目前我還不能理解得很深懂盐,但相信會(huì)逐漸理解它,如有想法莉恼,歡迎交流速那。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?--Dylan 9/18/2016

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末尿背,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子榆俺,更是在濱河造成了極大的恐慌坞淮,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诺擅,死亡現(xiàn)場(chǎng)離奇詭異啡直,居然都是意外死亡烁涌,警方通過查閱死者的電腦和手機(jī)酒觅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門舷丹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人颜凯,你說我怎么就攤上這事±俣睿” “怎么了彼城?”我有些...
    開封第一講書人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)募壕。 經(jīng)常有香客問我,道長(zhǎng)筐眷,這世上最難降的妖魔是什么习柠? 我笑而不...
    開封第一講書人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮武翎,結(jié)果婚禮上溶锭,老公的妹妹穿的比我還像新娘。我一直安慰自己趴捅,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開白布综芥。 她就那樣靜靜地躺著猎拨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪红省。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,727評(píng)論 1 305
  • 那天虾啦,我揣著相機(jī)與錄音蚜枢,去河邊找鬼。 笑死厂抽,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的昭殉。 我是一名探鬼主播藐守,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼卢厂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起任内,我...
    開封第一講書人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎趋距,沒想到半個(gè)月后越除,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體节腐,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡翼雀,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年孩擂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肋殴。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡护锤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出烙懦,到底是詐尸還是另有隱情,我是刑警寧澤氯析,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布掩缓,位于F島的核電站,受9級(jí)特大地震影響你辣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜舍哄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一表悬、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦籽暇、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捏顺。三九已至六孵,卻和暖如春幅骄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背主巍。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工挪凑, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人躏碳。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像肄渗,于是被迫代替她去往敵國(guó)和親咬最。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容