前提・実現したいこと
勉強でコードを書いています。
if文のネストが深くなってきたので可読性が悪いのでは無いかと書き直しています。
独学の為コードの可読性が低かったり汚かったりするのではないかと心配です。
どのように改善するべきなのか現場で働いている方の感想やアドバイスを頂きたいと思い投稿致しました。
-追記-
mts10806さんからご指摘を受けて今動かしてみているコードをそのまま追加してみました。
指定日から表示するコードは配布されていたのですが、毎週表示するコードは配布されていませんでした。
作成のついでに配布用のコードを作って私みたいに検索した人の手助けになればと作成しているのですが、恥ずかしくないコードにしたいなと思い今回の投稿に至っております。
-追記2-
think49さんのからご指摘を受けて気付きました。
上側コード
$(elem).foreach(function(){
の部分を修正致しました。
このサイトの使用方法のアドバイスも承りました。
他にも利用方法で誤った使用方法があれば、今後の利用に役立てたいと思いますのでご指摘お願い致します。
-追記3-
think49さんからご指摘がありましたので追記致します。
上のコードは下のコードを質問用にシンプルにした(つもり)ものでしたがうまく伝わらないようなので下のコードを掲載致しました。
以降、上のコードは今後この質問を検索で訪れた方様に残しておくべきか悩んでおります。
残すべきかどうかのアドバイスも頂ければ幸いです。
該当のソースコード
js
1$(elem).each(function(){ 2 var aaa = "moji", bbb = "moji", 3 aa = true, bb = true, 4 a = 1, b = 1, c = 1, d = 1, e = 1; 5 if(aa || aaa.match("hoge")){ 6 if((a >= 0 && b >= 0) || (a <= 0 && b <= 0)){ 7 //処理1 8 }else if(a <= 0 && b >= 0){ 9 //処理2 10 if(bb && b <= c){ 11 if(bbb.match("fuga")){ 12 //処理3 13 if(e%2 == 0){ 14 //処理4 15 } 16 }else{ 17 //処理1 18 if(e%2 == 0){ 19 //処理2 20 } 21 } 22 } 23 } 24 }else{ 25 //処理1 26 } 27});
js
1/*------------------------------------設定------------------------------------*/ 2//クラス名 3var class_name = ".dtimer"; 4//点滅色(CSS形式)例:red / #008000 / rgb(0,0,255)/ 5var color = "red"; 6//カラーチェンジもしくは点滅開始時間(終了何秒前からカラーチェンジもしくは点滅するか) 7var flash_time = 600; 8//更新間隔(秒) 9var reload_time = 1; 10/*----------------------------------------------------------------------------*/ 11reload_time *= 1000; 12$(document).ready(function displayTimer(){ 13 $(class_name).each(function(){ 14 var sh = parseInt($(this).attr("sh")) || 0, 15 sm = parseInt($(this).attr("sm")) || 0, 16 eh = parseInt($(this).attr("eh")) || 24, 17 em = parseInt($(this).attr("em")) || 0, 18 flash = $(this).attr("flash"), 19 wval = $(this).attr("week"), 20 elem = $(this).prop("tagName"), 21 stime = (sh * 60 + sm) * 60, 22 etime = (eh * 60 + em) * 60, 23 now = new Date(), 24 ntime = parseInt((now.getHours() * 60 + now.getMinutes()) * 60 + (now.getSeconds())), 25 sjisa = stime - ntime, 26 ejisa = etime - ntime, 27 weekarry = ["日","月","火","水","木","金","土"], 28 weekno = now.getDay(), 29 week = weekarry[weekno]; 30 if(wval === undefined || wval.match(week)){ 31 if((sjisa >= 0 && ejisa >= 0) || (sjisa <= 0 && ejisa <= 0)){ 32 $(this).hide(); 33 }else if(sjisa <= 0 && ejisa >= 0){ 34 $(this).show(); 35 if(flash && ejisa <= flash_time){ 36 if(elem.match(/(p|a)/i)){ 37 $(this).css("color",""); 38 if(ejisa%2 == 0){ 39 $(this).css("color",color); 40 } 41 }else{ 42 $(this).hide(); 43 if(ejisa%2 == 0){ 44 $(this).show(); 45 } 46 } 47 } 48 } 49 }else{ 50 $(this).hide(); 51 } 52 }); 53 setTimeout(function(){displayTimer()}, reload_time);//再起呼び出し 54});
回答8件
あなたの回答
tips
プレビュー