新的項(xiàng)目已經(jīng)執(zhí)行到開發(fā)設(shè)計(jì)階段了剑令,此項(xiàng)目包含之前多個單獨(dú)子系統(tǒng),他們將整合為一個統(tǒng)一系統(tǒng)平臺拄查,項(xiàng)目包含了數(shù)據(jù)庫的集成吁津、界面的集成,
今天和新項(xiàng)目的架構(gòu)人員溝通了一些項(xiàng)目架構(gòu)的一些細(xì)節(jié)堕扶,對他的有些看法我還是持質(zhì)疑態(tài)度碍脏,比如下面的幾個做法癣疟。
#1、因?yàn)槎鄠€子系統(tǒng)都有相同的數(shù)據(jù)表潮酒,數(shù)據(jù)庫(SQL Server )整合時假夺,這些相同的表是否需要整合躯舔。
最初他的想法是將相同的表整合為一張表,加字段表示某條數(shù)據(jù)屬于哪個子系統(tǒng)模塊。但是最后有人提出:在一張表里會不會出現(xiàn)用戶在使用多個子系統(tǒng)處理同一表數(shù)據(jù)時诅诱,造成數(shù)據(jù)操作訪問出現(xiàn)表的鎖死桨螺;某個子系統(tǒng)產(chǎn)生錯誤數(shù)據(jù)時兄墅,會影響其它子系統(tǒng)脐嫂。
我覺得上面的兩點(diǎn),在開發(fā)時應(yīng)該都是可以避免的故源,但是最后定的是:各子系統(tǒng)重復(fù)的表還單獨(dú)保留污抬。
這里反映的一個問題就是,在項(xiàng)目開發(fā)時绳军,如果遇到了技術(shù)難點(diǎn)印机,一般開發(fā)人員或開發(fā)負(fù)責(zé)人都不想去畫點(diǎn)時間研究新問題,他們都會把新的設(shè)計(jì)往老的架構(gòu)上去靠攏门驾,這樣降低了技術(shù)難點(diǎn)射赛,只是需要花些力氣,比如相同代碼邏輯要寫好多遍奶是。
這樣開發(fā)人員一直都在用老的知識楣责,造成的結(jié)果就是,做了好幾年開發(fā)聂沙,技術(shù)水平還是很一般秆麸,因?yàn)橐恢痹赾opy老的東西。
#2及汉、相同信息沮趣、不同類型數(shù)據(jù)插入數(shù)據(jù)庫表通過序列號區(qū)分,比如我有一個學(xué)生表豁生,程序里面寫死序列號1到10000為初中生兔毒,10001到20000為高中生漫贞。
這種方法很奇葩甸箱,既然需要分信息的類型,為什么不在信息表中添加一個”類型“的字段迅脐,他的解釋時芍殖,不加字段可以不動原來的表結(jié)構(gòu),少改一些代碼谴蔑。
這里反映的一類問題都是豌骏,項(xiàng)目的技術(shù)負(fù)責(zé)人一般都優(yōu)先考慮了怎么做更省事龟梦,而不是怎么做擴(kuò)展性、條理性更強(qiáng)窃躲。
比如很多東西都在代碼中寫成了硬邏輯计贰,不利于之后的擴(kuò)展和改造。
我覺得很多項(xiàng)目之所以改造困難蒂窒,bug重重躁倒,都是應(yīng)為前期程序架構(gòu)人員圖省事,埋下的坑洒琢。