如何寫(xiě)出讓同事無(wú)法維護(hù)的代碼 - 李云鵬 #DevFest2021#【CC字幕】

演講者背景:https://dsj.imut.edu.cn/info/1053/3884.htm
https://book.douban.com/subject/2208597/

《測(cè)試驅(qū)動(dòng)開(kāi)發(fā)》
溫伯格《理解專(zhuān)業(yè)程序員》
Roedy Green How to write unmaintainable code
https://www.spigotmc.org/threads/how-to-write-unmaintainable-code-roedy-green.117330/
https://hilton.org.uk/blog/how-to-write-unmaintainable-code
陳皓:如何寫(xiě)出無(wú)法維護(hù)的代碼
https://coolshell.cn/articles/4758.html



沒(méi)有尾探,導(dǎo)致箭頭式代碼
爭(zhēng)議:閱讀困難,編寫(xiě)省力(少return)
IDEA Alt+ Enter 可以自動(dòng)重構(gòu),添加return

函數(shù)嵌套、對(duì)象嵌套 一層又一層

避免上級(jí)干擾,堅(jiān)持正確的設(shè)計(jì)
“在引起問(wèn)題的框架內(nèi)思考,將永遠(yuǎn)無(wú)法解決問(wèn)題?!?/p>
model - view - controller
MVC 的初衷
- 提高模塊復(fù)用程度
- 提高可讀性
- 提高可測(cè)試性
model - view - presenter
diff MVP MVC區(qū)別:
The Controller works as the entry point, but in MVP, the entry point is View.
https://askanydifference.com/difference-between-mvc-and-mvp
業(yè)務(wù)快速發(fā)展,代碼快速累積
重構(gòu)不算績(jī)效,沒(méi)有動(dòng)力
單項(xiàng)依賴(lài),重構(gòu)成本低

基于MVP,增加了 “統(tǒng)籌層”


1~2個(gè) if-else block
use case 單元測(cè)試
谷歌藍(lán)圖構(gòu)建系統(tǒng)
https://github.com/google/blueprint
MVC適用Java后端服務(wù)
Android開(kāi)發(fā)種,MVC已經(jīng)不流行