æè¿ãCode Complete第2ç
ãšããæ¬ãèªãã§ããŠãã倿°ã®äœ¿çšïŒç¬¬10ç« ïŒãããšãŠãçºã«ãªãå
容ã ã£ãã®ã§ãäŒç€Ÿã®ããŒã ã¡ã³ããŒã«å°ããã®ããšã«ã€ããŠè©±ããããJavaScriptã«ã€ããŠè峿·±ã話ãããããšãã§ããã
第10ç« ã®å
容ã«ã€ããŠãè°è«ã®å¯Ÿè±¡ãšãªã£ãéšåãåŒçšããã
10.3 倿°ã®åæåã®ã¬ã€ãã©ã€ã³
倿°ã¯æåã«äœ¿çšããå Žæã®è¿ãã§åæåãã
ãªã¹ã10-2: æªãåæåïŒVisual BasicïŒ
' ãã¹ãŠã®å€æ°ã宣èšãã
Dim accountIndex As Integer
Dim total As Double
Dim done As Boolean
' ãã¹ãŠã®å€æ°ãåæåãã
acountIndex = 0;
total = 0.0
done = False
...
' accountIndexã䜿çšããã³ãŒã
...
' totalã䜿çšããã³ãŒã
...
' doneã䜿çšããã³ãŒã
While Not done
...
…äžç¥
ãªã¹ã10-2ã®äŸã§ã¯ãdone倿°ã宣èšããåŸãdone倿°ã䜿çšããã³ãŒããå®è¡ããããŸã§ã«ãdone倿°ã倿Žãããå¯èœæ§ãããã
…äžç¥
ãã1ã€ã®åé¡ã¯ããã¹ãŠã®åæåã1ãæã«ãŸãšãããšãdone倿°ã¯æåŸã®æ¹ã§ãã䜿çšãããªãã«ããããããããã¹ãŠã®å€æ°ãã«ãŒãã³å
šäœã§äœ¿çšããããšããå°è±¡ãäžããããšã ã
…äžç¥
ããã¯ããé¢é£ããäœæ¥ã1ã€ã«ãŸãšããããšããè¿æ¥ã®æ³åã®äžäŸã§ããã
ãªãã»ã©ãªãã»ã©ããããåã¯æ®æ®µã®æ¥åã§ããã°ã©ãã³ã°èšèªããããã®ã¯JavaScriptãã䜿ããªãã®ã§ãJavaScriptã«çœ®ãæããŠèãããã
var accountIndex = 0,
total = 0,
done = false;
// accountIndexã䜿çšããã³ãŒã
...
// totalã䜿çšããã³ãŒã
...
// doneã䜿çšããã³ãŒã
while(!done) {
}
...
ãããæ¬æžã§ãæªãäŸããšãããŠããã³ãŒããJavaScriptã«çœ®ãæããã³ãŒãã ãããã颿°ã®å
é ã§ var hoge = 0, fuga = false;
ã®ããã«ããŠå€æ°ããŸãšããŠå®£èšïŒïŒåæåïŒããã®ã¯JavaScriptã§ã¯ããèŠãããã³ãŒãã ããã®jQueryã§ãããã®ãããªèšæ³ãå€çšããŠããã
JavaScript: The Good Parts
ã«ãããš
ã»ãšãã©ã®èšèªã§ã¯ã倿°ã¯äžè¬çã«æåã«å©çšãããå Žæã§å®çŸ©ããã®ãæãè¯ãæ¹æ³ã ããããããã¯ããããã¯ã¹ã³ãŒããæããªãJavaScriptã§ã¯å¥œãŸãããªãããã¹ãŠã®å€æ°ã¯ãããããã®é¢æ°ã®å
é ã§å®çŸ©ããã»ããè¯ãã
ãšããããããJavaScriptã¯ãããã¯ã¹ã³ãŒããæããªãïŒ{}ã§ãããããéšåéå®ã®å€æ°ã¹ã³ãŒãïŒãšãããããã倿
èšèªã§ããã倿°ã®ã¹ã³ãŒããçæããã®ã¯é¢æ°ãããã¯ã®ã¿ã ããããçç±ã§ã倿°ã¯ãŸãšããŠé¢æ°ã®å
é ã§å®£èšãããšããèšæ³ããã¹ããã©ã¯ãã£ã¹ãšãããŠããã
ããŠããããCode Complete第2çã«ããã倿°ã¯æåã«äœ¿çšããå Žæã®è¿ãã§åæåãããã»ãããããšããçå±ã®ç¶ãã¯ããã ã
10.4.1 倿°ã®åç
§ã¯ãŸãšããŠ
倿°ãåç
§ããŠããæ¬¡ã«åç
§ãããŸã§ã®ã³ãŒãã¯ããè匱æ§ã®çªãïŒç¡é²åãªæé垯ïŒã§ããããã®çªã§ã¯ãæ°ããã³ãŒãã远å ãããããäœæ°ãªã倿°ã倿Žããããã倿°ã«å«ãŸããŠããªããã°ãªããªãå€ãå¿ããããŠããŸã£ããããã倿°ã®åç
§ã¯ãåžžã«è¿ããšããã«ãŸãšããŠå±æåããã®ãæãŸããã
…äžç¥
ãããæž¬å®ããæ¹æ³ã¯ã倿°ã®ãæç¶ééããèšç®ããããšã§ããã
…äžç¥
ãªã¹ã10-6: 1ãš0ã®æç¶ééïŒJavaïŒ
a = 0;
b = 0;
c = 0;
b = a + 1;
b = b / c;
ãã®å Žåãbã®1ã€ç®ã®åç
§ãš2ã€ç®ã®åç
§ã®éã«ã³ãŒãã1è¡ããã®ã§ããã®æç¶ééã¯1ã§ãããbã®2ã€ç®ã®åç
§ãš3ã€ç®ã®åç
§ã®éã«ã¯ã³ãŒãããªãã®ã§ããã®æç¶ééã¯1ã§ãããbã®2ã€ç®ã®åç
§ãš3ã€ç®ã®åç
§ã®éã«ã¯ã³ãŒãããªãã®ã§ããã®æç¶ééã¯0ã§ããã
…äžç¥
ãªã¹ã10-6ã§ã¯ãbã®å¹³åæç¶éé㯠(1 + 0) / 2 = 0.5 ã§ããã倿°ã®åç
§ãè¿ãã«ãŸãšãããšãã³ãŒãã®èªã¿æãã³ãŒããã»ã¯ã·ã§ã³ããšã«èªãã§ãããããã«ãªãã
…äžç¥
10.4.2 倿°ã®ã寿åœãã¯ã§ããã ãçã
倿°ã®æç¶ééã«é¢é£ããŠã倿°ã®ã寿åœããšããæŠå¿µãããã倿°ã®å¯¿åœãšã¯ã倿°ãåç¶ããæéå
ã«ååšããã¹ããŒãã¡ã³ãã®åèšã§ããã
…äžç¥
倿°ã®æç¶ééãšã¯ç°ãªãã倿°ã®å¯¿åœã¯ãæåã«åç
§ãããŠããæåŸã«åç
§ããããŸã§ã®å€æ°ã®äœ¿çšåæ°ãèšç®ã«å
¥ããªãã倿°ãæåã«1è¡ç®ã§åç
§ãããæåŸã«25è¡ç®ã§åç
§ãããå Žåã倿°ã®å¯¿åœã¯25ïŒã¹ããŒãã¡ã³ãïŒã§ããã
…äžç¥
倿°ã®æç¶ééãšåæ§ã«ã倿°ã®å¯¿åœãã§ããã ãçããããã€ãŸãã¹ããŒãã¡ã³ãã®æ°ãå°ãªãããããšãç®æšãšãªããæç¶ééãšåæ§ã«ãã¹ããŒãã¡ã³ãã®æ°ãå°ãªããããšãè匱æ§ã®çªãå°ãããªããšããå©ç¹ãããã
…äžç¥
寿åœãçããããã1ã€ã®å©ç¹ã¯ãã³ãŒããæ£ç¢ºã«ææ¡ã§ããããšã§ããã倿°ã«10è¡ç®ã§å€ã代å
¥ãã45è¡ç®ãŸã§äœ¿çšããªãå Žåã2ã€ã®åç
§ã®éã«ç©ºããŠãã空éã¯ã倿°ããã®éã«äœ¿çšãããŠããããšãæç€ºããã
…äžç¥
倿°ã®å¯¿åœãçããšãã³ãŒããèªã¿ããããªããèªã¿æãäžåºŠã«é ã«å
¥ããªããã°ãªããªãã³ãŒãã®è¡æ°ãå°ãªããã°å°ãªãã»ã©ãã³ãŒãã¯çè§£ããããã
倿°ã«ã¯ãå¹³åæç¶ééããšã寿åœããšããæŠå¿µããããšããããããŠããããçããªã£ãæ¹ãã³ãŒãã®èªã¿æã«ãšã£ãŠèªã¿ãããã³ãŒãã«ãªããšããã
å»å¹Žãåããšããæ¡ä»¶ã§æ°åè¡ã«åã¶JavaScriptãæžããéãæãé ãæ©ãŸããã®ã¯ã³ãŒããé ã«å
¥ããããšã ã£ããæ©èœã远å ã»ä¿®æ£ããããã«äžåºŠã«é ã«å
¥ããªããã°ãªããªãã³ãŒããå€ããããããéçºãé²ãã°é²ãçšãã³ãŒãã®ä¿®æ£ã¯å°é£ã極ããã
ããã°ã©ãã³ã°åå¿è
ã誰ããäžåºŠã¯ã¶ã€ããå£ãªã®ãããããªããã³ãŒãã®åå²ãã¯ãããšãããã³ãŒãã®èšèšã®éèŠæ§ãèã§æããç¬éã ã£ãã
ã ãããããäžèšã®ãèªã¿æãäžåºŠã«é ã«å
¥ããªããã°ãªããªãã³ãŒãã®è¡æ°ãå°ãªããã°…ããšãããã ãã«æ·±ãçŽåŸããã®ã ã£ãã
ããŠãã§ã¯JavaScriptã«ãããŠã倿°ã®å¯¿åœãçããããããšãšã颿°ã®å
é ã§ãã¹ãŠã®å€æ°ã宣èšãããããšã¯äž¡ç«ããã®ã ãããïŒããã«ã€ããŠé£åžã®@keiskeyã®æèŠã¯ããã ã£ãã
颿°1ã€ã®é·ãèªäœãçãããŠããŸãã®ãããã®ã§ã¯ãGoogle Closure Libraryã®ã³ãŒããèŠãŠãããšãäžèº«ã2è¡ãããªãã¡ãœããã«é·ã
ãšããååãä»ããŠãããããããããªé·ãååãä»ãããã ã£ããçŽæ¥ã³ãŒããæžããŠããŸãã°ããããããšæããã©ãã倿°ã®å¯¿åœãã®ããªã·ãŒããã£ãŠæžãããŠãããšèãããšåç¹ãããã
ãªãã»ã©…ãšåã³çŽåŸãããšãšãã«ãããã®è©±ãå
±æããŠããã£ãããšæã£ãã
äŸãã°äžè¿°ïŒãªã¹ã10-2ïŒã®ã³ãŒããäžã€ã®é¢æ°ã ãšèãããšãããªãã
function Account() {
var accountIndex = 0,
total = 0,
done = false;
// accountIndexã䜿çšããã³ãŒã
...
// totalã䜿çšããã³ãŒã
...
// doneã䜿çšããã³ãŒã
while(!done) {
}
...
}
ãã®é¢æ°ãã¯ã©ã¹é¢šã«æžãçŽããæ©èœåå²ãããšããããæãã«ãªãã
function Account() {
// ã³ã³ã¹ãã©ã¯ã¿
...
}
Account.prototype = {
getAccountIndex: function() {
var accountIndex = 0;
// accountIndexã䜿çšããã³ãŒã
...
return accountIndex;
},
getTotal: function() {
var total = 0;
// totalã䜿çšããã³ãŒã
...
return total;
},
checkStatus: function() {
var done = false;
// doneã䜿çšããã³ãŒã
while(!done) {
...
}
}
}
prototypeã«ã¶ãäžããã¡ãœãã1ã€1ã€ãçããŸãšããŠäžæã«æ©èœåå²ããããšããéããªãæ£è§£ã«è¿ãã®ã§ã¯ãªãããšæã£ã次第ã
åã¯ããã°ã©ããšåŒã°ããè·çš®ã§ã¯ãªãã®ã ããã©ãããã°ã©ãã³ã°ã«é¢ãã人éãšããŠããããã£ãèå¯ã¯ãšãŠãããããããšæããããŸãäœãåããããªè©±ããã£ããæžããŠããããã