持続可能なコードの作成

8705 ワード

エラーの定義には、再生プロセス、正しい所望の動作の定義(エラーが発生した理由)、エラーの正確なレポート、ブラウザ・コンソールで発生したエラー・メッセージの3つの側面が必要です.
静解析:実行しない(タイプスクリプトは静解析を提供する)代わりに、エラーを検索します.
エラーメッセージは何を意味しますか.取得
エラーメッセージのないバグは?個々のチェック(ボタンを押してイジェクトするまで...)
いちいちチェックするのは難しいので、事前にテストしておきましょう.
Edge caseを防ぐため:テストに失敗する可能性のある値を故意に入力してテストを行います...
コードオーバーライド率...100%は不可能です.70%も優秀です.e 2 eテスト?
TDD ... テスト主導開発方法論...ケントバッグで作った...まずテストを作成するので、テストのオーバーライド率が高くなります.
BDD ... 行動主導開発方法論...
テストの尊重がないのは恐ろしい...

尊敬する


抽出関数


...

中間変数の導入

//bad
const user = getUser()
if(user.authKey) {
...
}

//good
const user = getUser()
const isLoggedIn = Boolean(user.authKey)
if(isLoggedIn) {
...
}
中間変数を導入するときの中間関数(?)役に立つ
//bad
const user = getUser()
const purchases = getPurchaseHistory(user)

if(user.authKey && user.locale === 'kr' && purchase.length === 0) {
 showEventBanner(); 
}

//good
function isEligibleForEventBanner(){
	const user = getUser()
	const purchases = getPurchaseHistory(user)
    
    const isLoggedIn = Boolean(user.authKey)
    const isKorean = user.locale === 'kr'
    const hasPurchaseHistory = purchase.length > 0
    
    return ( isLoggedIn && isKorean && hasPurchaseHistory )
}

if ( isEligibleForEventBanner() ) {
	showEventBanner()
}
なるべく純関数で書かせてください.純関数は正確に何と言いますか.
Refacturing Bookからの条件付き統合...これより関数で分けて作るのがおすすめ

switch文ではなくobject literalを使用

//bad
function PrintJob(job){
	switch(job) {
      case 'engineer':
        console.log('엔지니어')
      	break;
      case 'developer':
        console.log('개발자')
      	break;
      case 'designer':
        console.log('디자이너')
      	break;
    }
}  
  
//good
function PrintJob(job){
	const translated = {
		engineer: '엔지니어',
      	developer: '개발자',
      	designer: '디자이너'
	}
    console.log(translated[job])
}