請各位前輩指導下簡練代碼的思路?
01-13
小弟初學.net mvc,做了一個簡單項目帶動自己學習。這是做出的項目視圖的一部分:
點擊修改需要向後台傳遞數據,我是用ajax提交的,而且是一個個提交的,下面代碼是【周任務】一欄【點擊修改】的代碼,後面的其它各欄都是此代碼的重複,只是傳遞的參數不一樣。後台也只好一個個接收,其中一個接收方法:
這樣寫是可以實現效果的,但代碼超多,而且都是重複代碼,請教下各位,有沒有其它更簡練的辦法實現效果。求指導一下思路。
你先做這幾步:
1、寫一大堆代碼。
2、標記出重複的部分。3、剩下的代碼思考一下能不能改成相似的形式,從而擴大重複的部分。4、重新組織代碼把重複的部分放到一起,避免穿插不重複的代碼。5、將代碼用空行和花括弧分成職能相對單一的代碼塊。接下來就是一些具體的消重方法了:
1、對於簡單的沒有控制流的,輸入輸出都很簡單的代碼,直接抽出成方法,用VS的重構工具抽取。2、如果有複雜的控制流,剪枝縮減控制流,並且嘗試讓重複的代碼覆蓋所有分支,即可抽出方法,不能抽出成一個方法,也可以根據分支抽出不同方法。
3、對於前後重複,中間不同的代碼,將不同部分抽出,作為一個函數參數傳入。
4、使用基於約定消滅mapping代碼。
另外對於初學者一個很重要的事情就是不要提前抽象代碼,不要提前消重,先寫出重複的代碼,再對代碼進行消重工作。瀉藥。按照你目前代碼體現的能力來說,知乎問針對代碼的指點意義不大。如何獲得簡練代碼的思路?你需要做的是:
- 大量寫代碼(可以先不要管代碼好看不好看)
- 學習大公司(google,microsoft之類)的代碼規範
- 學習使用各種框架並比較
- 讀面向對象敏捷開發設計相關的書籍
- 讀分層和設計模式的書籍
- 命名不規範
- 事件選用不合適
- 該使用局部變數的地方不使用
- 冗長的判斷條件
- SQL注入
- 無異常檢查
- 功能沒有合適的封裝
新入坑我就不打擊你了,答案中有人打擊得夠狠的了,令我氣憤的是,那傢伙打擊完還要誤導人,新手多看多想有個毛蛋作用啊,真正的指導是多干,通過海量的入門和強化訓練進行提高。
我不怕告訴你,打擊你的那人說得一點沒錯,確實垃圾,但是這又有什麼關係呢?新手不都是這樣成長起來的嗎,背景碾壓的請無視。
我剛開始的學習的時候連聲明個int num=0都要問老師num是什麼意思,你能想像老師看我的眼神嗎(逃)。
現在先不要想重構,正確的做法是多練,再多看多想,到時候自然各種設計模式、提練重構自然而然的就出來了,根本不用想的好嗎?後端弄成一個方法前端遍歷一下li 加上click監聽
寫的不錯,我看懂了,加油。
js 部分垃圾,不用事件代理是敗筆,拿用戶輸入拼接 HTML 敗筆,隱含的重複綁定事件敗筆,沒有事件節流會造成重複觸發敗筆,只有success 沒有fail 敗筆,只有if 沒有else 敗筆。
服務端部分更完蛋,拼接SQL 敗筆,臟讀敗筆,你這裡其實一個 upsert 搞定。1.買本代碼大全。2.簡練代碼不是一蹴而就的,原則是把代碼當文章,要自己看得爽,別人看得爽。如果你有朋友也干這個的話,拿給他們看看,相互吐槽一下,慢慢提高。
題主有這個意識非常好.簡化方法其他答主說的很全面了,我要提醒的是不要著急,代碼簡化就算很多老手都未必敢說能做到盡善盡美,多多實踐,這是一個水磨功夫,因為從根本上說這種工作考驗的是洞察力.
大家都說的在理 多多刷代碼 量上去了經驗就多了重複的代碼記重構 重構 重構 重要的事情要說三次
找本關於重構的書看下就明白了
你這代碼並非不夠簡練,實際上在不藉助框架的前提下高手寫這個功能我,差不多也是這些代碼。
你這代碼的問題是,邏輯錯誤。只看前端,你在 click 事件響應中綁定 blur 事件,意欲何為?推薦閱讀:
※IoC/AOP 這些開發範式為什麼在 .NET 平台上沒有被廣泛採用?
※C# 是使用引用計數來發現垃圾對象的嗎?
※反編譯DLL問題?