Java 脳

java_dukes.png

 

哀愁の Duke

do svidanya Sun Microsystems

JavaScript という言語

JavaScriptはやっかいな言語の1つだ。

JavaScriptの開発効率を悪くする巨悪の根源3つ

・ 変数定義は必要なし
・ マルチキャスト
・ スクリプト言語

つまり、変数定義の必要がないから、どこかで同じ変数名を使っていてもわからない、マルチキャストだから、文字列だと思ったら数字だったり、スクリプト言語だから、動かしてみるまで、動くかわからない。

といういいかげんっぷり。史上最恐言語の1つです。

 
 

JavaScriptで現在時刻を HHMISS の形式で取得するサンプル。

サンプルの中では、getHours() dt.getMinutes() dt.getSeconds() をキャストしているが、マルチキャストのため、数値として足し算してくれちゃうんだよね。

エンジニアが、キャストしないとコンパイラが通らない言語で、キャストを意識できるようになっていればいいが、それでもバグの温床になる。

その辺が、JavaScriptがクソだという理由。

	/**
	 * 現在時刻を String の HHMISS の形式で取得する。
	 * @param なし
	 * @return String の HHMISS の形式の現在時刻
	 */
	function getNowHhmiss() {

		var dt= new Date();
		hours = String(dt.getHours());
		minutes = String(dt.getMinutes());
		seconds = String(dt.getSeconds());

		/*
		 getHours() dt.getMinutes() dt.getSeconds() の戻り値は数値
		 HHMISSの形式に連結した場合は、Stringにキャストする必要がある。

		 キャストを意識できないコーダーだとこの辺がクソでバグが内封される!

		 例)下記のコードは、戻り値が数字のため、hours + minutes + seconds は数字として足し算される。
		 hours = dt.getHours();
		 minutes = dt.getMinutes();
		 seconds = dt.getSeconds();
		 alert(hours + minutes + seconds);
		*/

		if (hours < 10) {hours   = "0" + hours;}
		if (minutes < 10) {minutes = "0" + minutes;}
		if (seconds < 10) {seconds = "0" + seconds;}

		//alert("現在時刻 hhmiss = " + hours + minutes + seconds);
		return hours + minutes + seconds;
	}

このエントリーをはてなブックマークに追加