程式設計思想之 人是活的,程式是死的

2022-06-28 22:21:16 字數 4257 閱讀 4517

1.不要因為技術而技術,技術選型的初衷是需求。

現在很多人在做專案的時候,開口就提專案用的nosql、大資料處理、分布式系統等等技術。技術真的這麼重要嗎?

技術在軟體開發過程中的地位是不言而喻的,但是乙個專案選擇合適的技術去實現是很有必要,也是乙個很好的學習機會。

比如做乙個簡單的人事管理系統,簡單的說就是對資料的新增、刪除、修改。

但是隨著nosql的普及和運用,很多人在設計的時候可能會想用快取可以減輕資料庫壓力,增加資料的讀取速度等等優點。

從設計圖可以看出基本的設計,設計之初就想到nosql的好處,但是很多問題都沒有考慮到,比如:資料的同步策略、簡單資料用nosql效率真的比直接用資料庫高,高好多等等問題?

所以說技術和需求是相輔相成的,單一的需求或者技術就是咩有意義的,那麼在需求變更過程中選擇恰當的技術解決問題很重要、很重要?

2.做功能之前請不要先說效率,請先完成功能在進行優化效率。

編碼的執行效率直接影響到系統的執行速度是非常重要的,但是當你遇到乙個問題的時候,一起討論問題的時候。你是否最先想到的如果去解決問題,而不是看別人意見的缺點(這樣效率高不高、影響效能高不高、安全性等問題)?

我這裡不是說考慮這些不好,而是當你在想到乙個比較的成熟的處理辦法之後,你在去想這些問題。可能會有人提出質疑,這樣做是不是太片面了、不利擴充套件性等等問題?是這邊必須承認有這樣的問題,但是乙個功能都沒有做出來,想這些問題有用?

比如在遇到webapi請求後,根據actionid去判斷執行對應的fun時候

1.用if去完成

if(actionid==1)

functioin1();

else if(actionid==2)

functioin2();

else

functioin3();

可能就會有人說這樣寫,萬一actionid太多不利於擴充套件性,不夠靈活。

2.好吧我換成swith

swith(actionid)

case 1:

function1();

break;

case 2:

function2();

break;

default:

break;

可能還是會有上述的問題。

3.好吧我再換一種吧

dictionaryfun =new dictionary():

fun.add(1,function1);

fun.add(2,function2);

fun.add(3,function3);

if (fun.containskey(protoid))

fun[protoid].invoke();

可能會有說這樣用影響效能啥的。

其實最後我只想說一句,這些方法你都用過,嘗試過?曉得會影響擴充套件、安全、效能?如果真有,你有更好的解決辦法?如果有更好,如果沒有那麼還是建議你先一步一步的先去解決當前的問題,那麼在考慮下一步的其他問題吧?

3.太過死板,不懂靈活。

當遇到乙個問題的時候,一味的去新的方法或者新的東西上面去想辦法,不能仔細的回看自己原來做過的東西是否可以修改/重用?

比如乙個如下的簡單div組裝的tree樹形結構圖

四川省成都市綿陽市德陽市
當知道乙個市級的id去查詢省級的id

很多人覺得按照規範應該是根據市級div然後去查詢父級的div然後在查詢id,這個方法可行的,但是如果樹n多層數,不是需要查詢父級的父級...

其實認真觀察之後會發現每個市級的id 和父級id 是有關係的,可以直接操作id變化,組裝父類id,但是如果父類和子類沒有關係...

乙個div標籤其實不但可以id,還可以用其他屬性表示其關係或者對應的id,然後根據其他屬性查詢,但是可能在規範性會有點小問題...

在初始化的時候 id 可以是 sj+id這樣組合,然後切割id就可以查詢組裝...

如果上述都不行,可以不用div組裝用jqtree等等

這個例子其實就是想表達乙個其實解決乙個問題的辦法多種多樣,一種不行換一種,條條大路通羅馬。

上述都是個人的認識和理解,僅僅代表個人觀點,有更好觀點歡迎斧正,謝謝!

1.不要因為技術而技術,技術選型的初衷是需求。

現在很多人在做專案的時候,開口就提專案用的nosql、大資料處理、分布式系統等等技術。技術真的這麼重要嗎?

技術在軟體開發過程中的地位是不言而喻的,但是乙個專案選擇合適的技術去實現是很有必要,也是乙個很好的學習機會。

比如做乙個簡單的人事管理系統,簡單的說就是對資料的新增、刪除、修改。

但是隨著nosql的普及和運用,很多人在設計的時候可能會想用快取可以減輕資料庫壓力,增加資料的讀取速度等等優點。

從設計圖可以看出基本的設計,設計之初就想到nosql的好處,但是很多問題都沒有考慮到,比如:資料的同步策略、簡單資料用nosql效率真的比直接用資料庫高,高好多等等問題?

所以說技術和需求是相輔相成的,單一的需求或者技術就是咩有意義的,那麼在需求變更過程中選擇恰當的技術解決問題很重要、很重要?

2.做功能之前請不要先說效率,請先完成功能在進行優化效率。

編碼的執行效率直接影響到系統的執行速度是非常重要的,但是當你遇到乙個問題的時候,一起討論問題的時候。你是否最先想到的如果去解決問題,而不是看別人意見的缺點(這樣效率高不高、影響效能高不高、安全性等問題)?

我這裡不是說考慮這些不好,而是當你在想到乙個比較的成熟的處理辦法之後,你在去想這些問題。可能會有人提出質疑,這樣做是不是太片面了、不利擴充套件性等等問題?是這邊必須承認有這樣的問題,但是乙個功能都沒有做出來,想這些問題有用?

比如在遇到webapi請求後,根據actionid去判斷執行對應的fun時候

1.用if去完成

if(actionid==1)

functioin1();

else if(actionid==2)

functioin2();

else

functioin3();

可能就會有人說這樣寫,萬一actionid太多不利於擴充套件性,不夠靈活。

2.好吧我換成swith

swith(actionid)

case 1:

function1();

break;

case 2:

function2();

break;

default:

break;

可能還是會有上述的問題。

3.好吧我再換一種吧

dictionaryfun =new dictionary():

fun.add(1,function1);

fun.add(2,function2);

fun.add(3,function3);

if (fun.containskey(protoid))

fun[protoid].invoke();

可能會有說這樣用影響效能啥的。

其實最後我只想說一句,這些方法你都用過,嘗試過?曉得會影響擴充套件、安全、效能?如果真有,你有更好的解決辦法?如果有更好,如果沒有那麼還是建議你先一步一步的先去解決當前的問題,那麼在考慮下一步的其他問題吧?

3.太過死板,不懂靈活。

當遇到乙個問題的時候,一味的去新的方法或者新的東西上面去想辦法,不能仔細的回看自己原來做過的東西是否可以修改/重用?

比如乙個如下的簡單div組裝的tree樹形結構圖

四川省成都市綿陽市德陽市
當知道乙個市級的id去查詢省級的id

很多人覺得按照規範應該是根據市級div然後去查詢父級的div然後在查詢id,這個方法可行的,但是如果樹n多層數,不是需要查詢父級的父級...

其實認真觀察之後會發現每個市級的id 和父級id 是有關係的,可以直接操作id變化,組裝父類id,但是如果父類和子類沒有關係...

乙個div標籤其實不但可以id,還可以用其他屬性表示其關係或者對應的id,然後根據其他屬性查詢,但是可能在規範性會有點小問題...

在初始化的時候 id 可以是 sj+id這樣組合,然後切割id就可以查詢組裝...

如果上述都不行,可以不用div組裝用jqtree等等

這個例子其實就是想表達乙個其實解決乙個問題的辦法多種多樣,一種不行換一種,條條大路通羅馬。

上述都是個人的認識和理解,僅僅代表個人觀點,有更好觀點歡迎斧正,謝謝!

程式設計重要的是掌握程式設計思想

求最大值 求和 變數交還這三類是最近遇到的對於掌握核心思想非常重要的程式設計題目,三種型別的題目分別代表了三種思想,這三種思想都是非常重要的思想,一定要掌握這三種型別程式設計題的思想核心而不是僅僅記住這三種型別程式設計題目的 對我們而言是最重要的。求最大值 如果是三個數求最大值,我們還可以使用if ...

牛是怎麼死的?

牛耕田回來,躺在欄裡,疲憊不堪地喘著粗氣,狗跑過來看它。唉,老朋友,我實在太累了。牛訴著苦,明兒個我真想歇一天。狗告別後,在牆角遇到了貓。狗說 夥計,我剛才去看了牛,這位大哥實在太累了,它說它想歇一天。也難怪,主人給它的活兒太多太重了。貓轉身對羊說 牛抱怨主人給它的活兒太多太重,它想歇一天,明天不幹...

什麼是物件導向的程式設計思想?

物件導向的程式設計產生的歷史原因 由於面向過程程式設計在構造系統時,無法解決重用,維護,擴充套件的問題,而且邏輯過於複雜,晦澀難懂,因此,人們開始想能不能讓計算機直接模擬現實的環境,以人類解決問題的方法,思路,習慣和步驟來設計相應的應用程式。於是,物件導向的程式設計思想就產生了。物件導向的程式設計的...