コード行の長さと可読性の相関

8484 ワード

コードの可読性は難題です.今日はいくつかの論文を見て、最も善し悪しの区別がないような可読性のテーマ「総裁」について話しました.もっと科学的な研究はありますか.だから探してみました.

研究するスクリーンからの読み込み時の読み込み速度と行長の影響


2001年にマイクロソフト社の支援で行われたこの研究は、読書速度(普通、高速)と総裁(25、55、100)の読書能力の違いを見つけようとした.従来は出力物の類似性の研究が多かったが,デジタル時代における画面文字の研究はまだ不十分であった.研究の結果,出力コンテンツでは行長が70文字を超えないことが望ましいが,これがスクリーンに適用されるかどうかもこの研究の目的の一つであることが分かった.提出した文章の行長と読解速度を異なり,文章の内容に関する質問方式で読解力を測定した.この文章は総裁にしか興味がなく、それを主として研究の結果を説明している.次に、研究で使用した画面の例を示します.

研究の結果、ロープの長さが長くなると、全体の読解力が低下することが分かった.一般的な読書速度では、確かに総裁の増加に伴って読書能力が低下し、急速な読書速度では、短すぎたり長すぎたりする読書能力が相対的に低下している.

興味深いことに、読解力に比べて単純な読解量は、総裁の増加に伴い、特定の時間内の読解量も増加した.下図に示すように、読書速度から離れると、cplの増加に伴って読書量も増加する.

整理するなら、頭取の方が早く読めるので、閲覧するときに有利かもしれませんが、文章に対する理解力は落ちます.この研究では,自然な目の移動と次の問題を探す結果と推測した.雪は一般的に移動の範囲があり、長い行ほどこの範囲内を移動しないので、読書に支障をきたし、長い行ほど次の行で一度に起点を見つけることが難しくなり、読書を妨げ、読書能力に影響を及ぼすと推測されています.速い読書速度では、短行長の読書能力が低下するのは、短行長が短すぎて、一度情報を集中するのが難しく、常にスクロールする必要があるためかもしれません.

研究する可読性に及ぼす符号化習慣の影響


次の研究は、最近の2018年に行われ、可読性に及ぼす符号化習慣(会議)の影響を理解することを目的としている.研究方法は,これらのコードに従うjavaコードと従わないjavaコードを特定の符号化会議で示し,可読性がより良いと考えられる方法を選択することである.

実際のコードを見るため,研究参加者は開発者であり,年差分布は以下の通りである.

合計11種類の符号化会議が評価された.
  • 中括弧前スペース
  • // Adherent
    if(hi) {
        ...
    }
    
    // Violating
    if(hi){
        ...
    }
  • のカッコは、新しい行ではなく後ろに付いています.
    // Adherent
    while(hi) {
        ...
    }
    
    // Violating
    while(hi) 
    {
        ...
    }
    関連コード
  • 行で区切る
    // Adherent
    var other = otherService.getOne();
    other.doWork();
    
    cache.put(other);
    repository.save(other);
    
    // Violating
    var other = otherService.getOne();
    other.doWork();
    cache.put(other);
    repository.save(other);

  • 行の長さを80文字に制限

  • 引用符は4つのスペースです.
  • // Adherent
    if(hi) {
        doSmth();
    }
    
    // Violating
    if(hi) {
      doSmth();
    }

  • コードブロックの深さは3レベルを超えてはいけません.

  • 一列ひとつひとつ
  • // Adherent
    doSmth(); 
    doOther();
    
    // Violating
    doSmth(); doOther();
  • 通貨名を使用しない
  • // Adherent
    @Service
    
    // Violating
    @org.springframework.stereotype.Service

  • 呼び出しフィルタを設定しない

  • ロングアクションをゾーン変数に分離

  • 辞書の単語の名前付け

  • このうち8種は統計的に有意な結果を示した.7種類はプラスの影響があり,1種類はマイナスの影響がある.1,4,7,8,9,11は可読性が向上し,2号は低下した.研究では2番の結果が参加者の既存のC#経験で発生する可能性があることを示した.

    参考資料


    Dyson, Mary & Haselgrove, Mark. (2001). The influence of reading speed and line length
    on the effectiveness of reading from screen. Retrieved from https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.108.4346&rep=rep1&type=pdf
    Santos, Rodrigo & Gerosa, Marco. (2018). Impacts of Coding Practices on Readability. Retrieved from https://www.ime.usp.br/~gerosa/papers/ICPC2018-Legibility.pdf