經驗之談(二)從複雜到簡單,大道至簡

2021-08-26 22:11:26 字數 2091 閱讀 8912

還記得老師以前的一堂課上,用了兩個圖(時域中的正余弦函式和頻域中的正余弦函式)講解了從複雜到簡單,大道至簡的道理,在隨後的開發道路上,我也漸漸明白這個道理,也在實踐這個道理。

這個道理就是我們所處在的複雜世界複雜事物都能夠用簡單的事物來組成和來表示。正余弦函式如此,程式設計也是這樣。

最近在做許可權管理專案,這個專案讓我對這個道理更加有了深刻的認識,大道至簡,當我們把複雜問題拆分成簡單的問題之後,我們就能從容不迫的解決這些簡單的問題,當我們把簡單的問題解決掉之後,複雜問題也就相應的得到解決。這就是我今天要說的從複雜到簡單,大道至簡。

1、許可權專案,業務處理是非常複雜的。

所以我們leader把它拆解開來,也就是兩個部分,乙個是主體,主要是對誰進行授權,乙個是針對哪些資源進行授權。對誰又分成了三個主體,角色、使用者、使用者組;另外用乙個關係表來處理他們之間的關係;另外一部分就是對哪些資源進行授權,這裡利用模組化的思路,讓所有的頁面都分成模組,模組裡面有操作,頁面上面還有相應的系統,這樣我們就能把這些資源統一到模組上,其餘的資源都是對模組進行的定位或擴充套件,讓操作的值來進行授權的許可權計算。

這樣下來,整個業務也就不再那麼複雜。其實所有的開發專案都是在做著這個工作,有些人能夠把非常複雜的東西,變成非常簡單的問題來處理,這是技能,這也是在學習過程中慢慢培養的素質。

2、處理複雜的業務單元,要保持清醒的頭腦,拆分成一下常見的問題來處理。

許可權專案中,有這樣乙個業務單元,就是要批量匯入乙個結構,也就是上面說的系統、頁面、模組、操作資源的乙個結構。例如其中就有乙個批量匯入系統結構,主要是通過excel來完成這樣乙個匯入功能,批量匯入功能非常常見,但是這裡的匯入業務單元是非常複雜的。

怎樣處理這樣乙個複雜的業務邏輯單元呢,我是這樣做的,首先分析這個匯入的功能其實就是新增,把問題這樣想之後,那麼實現是沒有問題的,關鍵的就是校驗正確性上了。

校驗正確性是非常複雜的,舉例來說:

圖1:

圖2:

圖3:

圖4:

既然插入已經能夠解決了,那麼還有乙個重要的問題就是讀,所以我也首先把這個讀的問題利用demo也實現了,就是匯入jxl.jar包,動態讀出來workbook、sheet、cell的資料就ok了。

這樣這個複雜的業務單元就還剩下校驗了。

校驗複雜,就是因為判斷非常多,邏輯性比較強,但是分析之後我發現它無非就是判斷這一列的資料是否重複,這裡用到的方法就是利用乙個陣列和乙個集合,都將這些資料填充進去,之後比較長度,不同則有重複;還有就是判斷這個模組是否屬於這個頁面,這個是比較簡單的就是呼叫資料庫來判斷有沒有;還有就是模組的排列號,因為模組排列號就是必須保證排列號必須是1到n的不能重複,不能有間隔的數,實現這個方法用到讀取模組的陣列並且排序和自定義生成的陣列(生成1到n的陣列)比較兩陣列是否相等;還有乙個處理就是判斷操作值是否正確,這裡要用到一點數學的關係,就是等比數列,因為操作的值也是從2開始等比的增長,所以就利用數學計算等比數列的和,也是首先把操作值放到陣列裡,之後用程式獲得行數,通過迴圈算出值的和,最後和pow(2,行數)比較,相等則正確,不等則不正確。

綜合上面的分析,我知道這個複雜的業務其實就是幾個簡單的小問題,判斷陣列中的資料是否重複,判斷陣列中的資料是否有等差數列(具體到這個專案中差值是1),判斷陣列中的資料是否成等比數列,還有就是讀取excel表資料,插入資料庫資料。只要把這五點掌握,這個複雜業務單元也是非常簡單的。

3、算是總結吧。

所以,大道至簡,從複雜到簡單是乙個過程,當處理這個過程的時候,我們要有思考,要學會分析,要學會在分析中獲得收穫,這些收穫是自己下次大道至簡的解決之道。學習吧,還有很遠的路途要走。

從微服務遷移到工作流的經驗之談

jet公司的訂單管理系統 oms 負責處理很多業務功能,最初是由一系列微服務組成的。隨著公司的發展,這種架構所面臨的挑戰也越來越大,直到他們決定構建乙個新的基於工作流的平台。jet工程師james novino在一篇博文中介紹了舊系統面臨的挑戰 對新平台的概述以及新平台執行一年多後所總結的經驗。om...

從微服務遷移到工作流的經驗之談

jet公司的訂單管理系統 oms 負責處理很多業務功能,最初是由一系列微服務組成的。隨著公司的發展,這種架構所面臨的挑戰也越來越大,直到他們決定構建乙個新的基於工作流的平台。jet工程師james novino在一篇博文中介紹了舊系統面臨的挑戰 對新平台的概述以及新平台執行一年多後所總結的經驗。om...

從微服務遷移到工作流的經驗之談

jet公司的訂單管理系統 oms 負責處理很多業務功能,最初是由一系列微服務組成的。隨著公司的發展,這種架構所面臨的挑戰也越來越大,直到他們決定構建乙個新的基於工作流的平台。jet工程師james novino在一篇博文中介紹了舊系統面臨的挑戰 對新平台的概述以及新平台執行一年多後所總結的經驗。om...