在開發中 if else 實在是多啊
剛敲完代碼,看了下 又發現N多個 if else啊
希望大家給個好的建議啊
--------
use pattern, such as chain of responsibility
--------
enum
--------
我是來接分的,不可避免的邏輯判斷,該寫的還得寫
--------
樓上的。用枚舉的話不是還得if判斷枚舉值的情況麼。
這個看業務需求了。如果業務的條件本來就多。我覺得難免會多。
--------
1、能用條件三元運算子的時候盡量用,但是商務邏輯可能會看不清晰
2、能用switch的時候盡量用
3、多用if{ return; }...if{ return; }...結構,或者while(true) { if { break; }...if { break; }...break; }結構(用於不方便退出整個方法的時候,但有死迴圈風險,代碼習慣好的可以用),分支條件清晰,多層嵌套if...else...最容易犯錯誤
4、盡量分拆方法,讓if...else...裡面只有一句方法調用,邏輯也清晰
目前採用的就這麼多,樓主可以參考一下。
--------
枚舉可以有自己的方法,而且每個方法的實現可以不同,當然枚舉不是萬能的,不過也能解決一部分問題
使用switch或者enum,如果項目很大或者涉及到系統的合理性來說,使用設計模式也是很不錯的選擇,比如說責任鏈設計模式:http://4ujava.javaeye.com/blog/547166
--------
邏輯重要,沒有辦法的事情 if()else if()
--------
是swing還是web哦....
--------
如果想把所有的if else邏輯都提取出來,可以考慮用規則引擎
iLog,drools這些就是來把複雜的商務邏輯通過設定檔的方式提取出來,以後改甚至加新的商務邏輯不用更改代碼了,改設定檔即可
--------
不用if else的話就只能用if return……
--------
我知道的避免ifelse的方法:
第一種是表驅動法:就是一開始就把所有的可能的資料都存放起來
第二種是用狀態/策略模式
具體採取什麼辦法,就是看你要實現的功能了....
--------
為什麼不喜歡if-else呢。。。
一般的話,多用while 來代替if 語句,尤其是當有很多if 語句的時候
if語句相對while 語句來看,存在一定的缺陷..所以建議考慮多使用while語句.
--------
if else 很常用啊,為什麼要不用if else呢。 總是要做布爾運算的麼
如果說,因為if else 很多,可以考慮用 監聽者 模式, 把邏輯判斷放到若干個監聽者裡,每個監聽者處理一種情況,有資料進來就給所有的監聽者,直到有人處理為止
本質上還是要用if else
關鍵看你的目的了
--------
用swith
--------
用 a?b:c 的格式,功能相當於if-else,格式上簡單一些,推薦~~
if
return
試試
--------
if
return
switch
case
--------
用switch,不過java的switch好像只支援int和char
還有可以用離散數學裡的關係運算把條件化簡或結合
--------
使用switch或者enum,如果項目很大或者涉及到系統的合理性來說,使用設計模式也是很不錯的選擇,比如說責任鏈設計模式:http://4ujava.javaeye.com/blog/547166
責任鏈設計模式是不是把if else封裝起來了,不是太明白,呵呵,初學。還有頭像很不錯。
如果怕if else嵌套多了會混亂,除了用模式這些方法外,我覺得可以把條件裡的邏輯寫成一個個小的private方法,如下: Java code
if (a) { doA(); } else if (b) { doB(); } else { doC(); } doA() {} doB() {} doC() {}
這樣看上去思路會稍微清晰一點,希望對你有協助。Good Luck!
--------
這個有可能嗎。
沒有If,這世界會怎麼樣。
--------
合理的業務規劃,實在要用就用。何必計較這個
-------
合理的業務規劃,實在要用就用。何必計較這個
有些人 比較 眼裡 看不見這些沙子 啊
不過寫代碼就應該 追求 盡量的 短小精悍啊
結構優美
--------
use pattern, such as chain of responsibility
嗯 正在苦學模式啊
--------
就是看的有點煩啊
if else if if else 感覺這樣寫代碼和在學校還是一樣的
看起來就是不爽啊
--------
不用 if else 我可能就不會寫程式了
--------
以論壇文章為例子,如ForumMessage是一個模型,但是實際中文章分兩種性質:主題貼(第一個根貼)和回帖(回以前文章的文章),這裡有一個樸素的解決方案:
建立一個ForumMessage,然後在ForumMessage加入isTopic這樣判斷語句,注意,你這裡一個簡單屬性的判斷引入,可能導致你的程式其他地方到處存在if else 的判斷。
如果我們改用另外一種分析實現思路,以對象化概念看待,實際中有主題貼和回帖,就是兩種對象,但是這兩種對象大部分是一致的,因此,我將ForumMessage設為表達主題貼;然後建立一個繼承ForumMessage的子類ForumMessageReply作為回帖,這樣,我在程式地方,如Service中,我已經確定這個Model是回帖了,我就直接下溯為ForumMessageReply即可,這個有點類似向Collection放入對象和取出時的強制類型轉換。通過這個手段我消滅了以後程式中if else的判斷語句出現可能。
--------
如何是具體的值,可以用swith(){ case:
//.....
break;}
代替
---------
將if else用在小地方還可以,如簡單的數值判斷;在實現業務功能時一般使用設計模式解決。如果你做了不少系統,很久沒有使用if else了,那麼說明你可能真正進入OO設計的境地了。
--------
純屬個人習慣問題,在寫代碼的時候,把IF ELSE 對齊就沒這問題了
--------
曾經聽人說過,如果你的代碼中,有很多的if...else的話,說明你的代碼物件導向不好。或許是認識膚淺吧,我還是認為if和else都是邏輯判斷必須的。樓上有幾位兄弟說的,用switch替換,個人和if一樣的。沒有什麼本質的區別。
--------
該用的時候還是得用。~
--------
重構到狀態模式。
--------
你可以貼段你的代碼出來讓大家給你最佳化下 實際上有些時候由於條件的重複判斷的確會出現很多該死的if else組合 寫的時候就那麼寫吧 當你寫完的時候我希望你能換個角度 看看自己寫的這段代碼嚴謹不嚴謹
--------
在項目中是的少用點if else但是有時得用還是用點。邏輯問題的時候。但是可以使用設計模式試試規划下。最主要的是要結構清晰。
--------
曾經聽人說過,如果你的代碼中,有很多的if...else的話,說明你的代碼物件導向不好。或許是認識膚淺吧,我還是認為if和else都是邏輯判斷必須的。樓上有幾位兄弟說的,用switch替換,個人和if一樣的。沒有什麼本質的區別。
是啊 代碼寫了幾年了啊 工作2年了啊 可發現代碼還是if else啊 看起來很不爽 啊
氣憤啊 大家有好的方法再說說吧 分可以再加的
--------
善於用return;
一些if語句可以不需要else。一些if語句 判斷完成立,可直接返回,無需向下走。
其實if else 是別的語言無可替代的,你有時候還必須得用。
我記得switch case 好像只能用int類型作為參數的。
--------
善於用return;
一些if語句可以不需要else。一些if語句 判斷完成立,可直接返回,無需向下走。
其實if else 是別的語言無可替代的,你有時候還必須得用。
我記得switch case 好像只能用int類型作為參數的。
int 和 char
--------
能用switch的時候不用if...else啊,效率高些嘛。
--------
不建議使用過多的if else ,switch. 因為可擴充性差,而且難維護.
可以嘗試用多態
-------- Java code
package com.csdn; interface Animal { void speak(); } class Dog implements Animal { @Override public void speak() { System.out.println( " dog speak. " ); } } class Cat implements Animal { @Override public void speak() { System.out.println( " cat speak. " ); } } class Pig implements Animal { @Override public void speak() { System.out.println( " pig speak. " ); } } public class NoIfElse { // 比方說現在有個需求, // 通過state狀態來判斷那種動物叫 // 0讓狗叫,1讓貓叫,2讓豬叫 /** * 方法1 */ private void animalSpeak( int state) { Animal[] animals = { new Dog(), new Cat(), new Pig() }; animals[state].speak(); } /** * 方法2,沒有用到Animal介面 */ private void animalSpeak2( int state) { if (state == 0 ) { new Dog().speak(); } if (state == 1 ) { new Cat().speak(); } if (state == 2 ) { new Pig().speak(); } } public static void main(String[] args) { NoIfElse t = new NoIfElse(); int state = 1 ; t.animalSpeak(state); t.animalSpeak2(state); } }
LZ比較下方法1和方法2
--------
條件判斷無法避免的, 充其量只是換下形式而已.!
if else 無所謂.! 但是盡量不要嵌套, 嵌套多了把你自己都套暈了的
LS的說的if return是個比較好避免嵌套的解決方案!
--------
一定是商務邏輯的問題。。。。可能是商務邏輯設計的不夠合理。。~。
--------
設計模式:
switch 用Adapter
設計模式