日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

程序员过关斩将-- 喷一喷坑爹的面向UI编程

發布時間:2023/12/4 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 程序员过关斩将-- 喷一喷坑爹的面向UI编程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊上方“藍字”關注我們

菜菜哥,求你個事唄?

說來聽聽,假裝你男朋友可不干

不是哦,是正經事。前幾天一個項目UI改了,好多人跟著加班修改,怎么樣盡量避免這種情況呢?

UI修改頂多和客戶端開發人員關系密切,你一個后端人員還牽扯那么大嗎?

我也納悶呢?為什么會牽扯到我

看來你面向UI編程了!!

摒棄面向UI編程

為何噴起此次話題,因為前不久和我們首席架構師溝通,談起程序設計問題,一不小心把UI扯進來,更把那些按照UI來編程的后臺工程師也扯了進來。今天特意百度了一下(其實程序員應該去google一下,奈何需要FQ),確實沒有面向UI編程這個概念在市面上流傳,大家可以當我是首創吧。需要聲明一點,這里噴的是服務器開發人員哦!!

我是一個極具打抱不平的人,浪跡編程十幾年,見過太多的程序員因為UI改了,而跟著改程序。當年菜菜一不小心踏入歧途的時候,每天看著《七天入門xxx》樂此不疲,猛烈的消化著書中“極具文化”的內容。然后看著“該死”的產品經理發過來的原型圖,費勁腦汁把數據庫設計的特別符合原型圖,然后開心的干起CUAD,你看,編程就是如此簡單!!而且當年覺得自己不可一世,可以進階架構師了

原來初生牛犢真的可以不怕虎,是因為虎厲害嗎?不,是因為牛犢還太傻X

無論是產經經理,還是前端開發人員,更或者是后端開發人員或者DBA,一切的工作都是圍繞業務開展的,產品經理首先是第一個消化并理解業務的人,有的產品經理自己還未消化業務就做出原型圖,概念圖腦圖等等,這些產品經理其實才是該死的。當產品把業務正確的用UI表達出來之后,業務便傳到了客戶端人員,至于服務端代碼編寫人員如果按照UI來理解業務,甚至設計數據庫表,那多半是掉坑里了

無論是客戶端人員還是服務端人員,寫代碼之前首先第一要做的,而且也是最重要的就是消化業務內容,把業務消化了寫起代碼來,有時候會對那些將來有擴展性的地方情不自禁留出擴展點。業務有時候就是要做一件事的過程,數據的流向而已,整體把握了才能設計出可以掌控的系統。

面向業務編程

其實上面說了這么多,都比較“抽象”,別人會說你寫的什么JB玩意,罵歸罵,但是不能侮辱我對技術的熱愛~~~

噴了那么多,看一個原型,話說這個產品畫的還是不錯的

一個簡單的發帖動態內容的展示,如此簡單的需求,你的系統該如何設計呢?

錯誤1

根據UI的設計,很多人第一步就開始設計數據庫對應UI

字段介紹
Id動態id
PublishUserId發布人id
PublishUserName發布人姓名
PublisherUserImg發布人頭像
.........

很多人會這樣設計,其中不乏有些高級程序員,我自認為這樣是錯誤的,說說我的想法,歡迎你們來噴。這是一個簡單的動態展示,仔細分析你會發現這個業務其實包含一些子業務:動態的發布人業務,動態內容業務,動態內容產生的外圍業務(點贊,留言,收藏等),如果硬是對應到表設計,也應該包含這三部分內容。

任何數據庫設計都不應該一一對應UI,UI只是你設計的參考而已,只是很多情況下業務模型正好和UI對應而已

錯誤2

很多人把發布人的姓名,頭像保存在了動態表,我認為這個還要看這個動態的定義,如果動態的發布人明確了不會隨著發布人信息的修改而變動,這個確實應該一次性保存,如果反之,只存一個用戶Id足以,這樣還可以避免因為發布人修改信息而帶來的同步數據問題,要知道數據一致性這塊其實是很煩人的。

不要讓UI的顯示內容,影響你的業務設計

錯誤3

動態的內容后續產生的數據(點贊,收藏,評論)這些業務在動態中都有量化,那這個具體的數據量化值很多人選擇在動態表中添加對應的字段(點贊總量,收藏總量等等)。其實我不建議這樣做,原因如下:

1. 如果新建了這些字段來保存,動態的每一次產生結果都需要更新對應的字段,同時還要保證這個值和詳細列表的數據一致性,不能產生100條評論,但是評論列表只有99條的情況發生。

2. 如果將來又新加了一條新的業務,比如分享的數量,那是不是還要在加一個分享量的數據表字段呢?

3. 如果你讀過菜菜以前的文章,應該知道菜菜一貫的尿性,這種動態的東西最適合做緩存,無論你愿意與否。至于這些點贊總數等這些類似業務,仔細分析只不過是屬于動態內容的后續業務,應該包含在整體業務之中,如果非要擼一行代碼:

public class Topic{public int Id; ? ?public string Content;... ? ?public int ThumbUpNumber: //點贊數量public int CommentNumber; //評論數量...}

需要注意一點:我以上代碼代表的是業務對象,可不是對應的DB中的表哦,這個業務對象也是我們要緩存的對象,當新加一條評論或點贊的時候,只不過是緩存數據的+1操作而已,至于這個數據值的初始化,完全可以由詳情表來提供,在真實的業務中,點贊或者評論的數據量很少到達萬級別,所以對于select count(0)這個操作來說都不是問題,一旦初始化完成做了緩存,后續的增加數量完全在內存中完成。

這里我想噴:任何業務數據庫都不是架構設計的中心

寫在最后

一個業務的成敗在于產品設計,一個系統設計的好壞,成敗在于程序員,在業務正確的情況下,請先消化掉業務再開始設計系統,UI只是你消化業務的參考,UI只是你業務的具體可視化體現。

●程序員修神之路--為什么我會了SOA,你們還要逼我學微服務?

●程序員過關斬將--數據庫的樂觀鎖和悲觀鎖并非真實的鎖

●程序員修神之路--設計一套RPC框架并非易事

●程序員過關斬將--要想獲取我的用戶信息,就得按照規矩來

●程序員過關斬將--更加優雅的Token認證方式JWT

●程序員過關斬將--cookie和session的關系其實很簡單

●程序員修神之路--用NOSql給高并發系統加速

●程序員修神之路--高并發系統設計負載均衡架構

●程序員過關斬將--你為什么還在用存儲過程?

●程序員修神之路--問世間異步為何物?

●程序員修神之路--提高網站的吞吐

長按添加菜菜好友

關注后回復:“大禮包”和“福利”,領取驚喜

總結

以上是生活随笔為你收集整理的程序员过关斩将-- 喷一喷坑爹的面向UI编程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。