水平にスクロールする必要があると、コードが読みにくくなりますか?


12

まあ、それは?それは悪い習慣と考えられていますか?

IMO、読みにくい。私は右にスクロールし、左、右、左などにスクロールするのが嫌いです。それはコーディングをより苦しくし、時々私を混乱させます。

たとえば、長い文字列をコーディングするときはいつでも、次のことを行います...

bigLongSqlStatement = "select * from sometable st inner join anothertable at" +
"on st.id = at.id" +
"and so on..." +
"and so on..." +
"and so on..."

15
はい、そうです。(こぼれた行をインデントすることを忘れないでください)
ハビエル

2
そうだと思います。私が見たことから、あなたが概説した方法で水平スクロールを排除することは、経験のあるプログラマーの間ではかなり標準的な実践のようです。この問題については個人的な好みが少しありますが
ケネス

1
いくつかのキーを使用して、コードを垂直方向および行内で高速にナビゲートできます。比較すると、水平方向にスクロールするのは面倒です。

列が広すぎると、読みにくくなります。それは何度も決まっています。
デビッドソーンリー

2
同意する。唯一の問題は、あなたのエディターをどれだけ広くするかについて全員に同意してもらうことです。非常に幅の広いコードでは、読み込める大量のコードがある場合、通常はラップを設定します。
カールビーレフェルト

回答:


19

はい、確かに、文字通りの意味だけでなく、一般的な意味でもそうです。

私はサイドバイサイドのコードdiffを行うのが好きです、そして、あまりに広い行はそれをより難しくします:

http://i.stack.imgur.com/fWVuz.jpg

三重引用符付き文字列を使用するScalaのような言語では、文字列の一部を結合する実行時の費用、見苦しい引用符、プラス記号(例に見られる)なしで、多くの行から文字列を作成できます。


11

はい、1行あたり80文字が妥当で一般的に使用されていると思います。


6

それは私にとって本当に重要な質問です!私は、24インチのデスクトップモニターを持っている同僚と13インチのラップトップで7か月働いてきましたが、読みやすいものになるまで行を短縮するのに多くの時間を費やしていることに気付きました。

多くの場合、80カラムは少し小さい(viで唯一のオプションを使用して端末で作業している場合を除く;))が、〜150を超えると多すぎます(以下を参照)。

それは純粋な「読みやすさ」の質問のためです。

現在、「グッドプラクティス」の部分では、このような長い行に欠陥があることがよくあります。たとえば、一時変数に抽出される部分や、複製される部分がある(ObjectiveC、iPhoneプログラミングの一般的なスニペット) :

CGPoint point = CGPointMake(someOtherView.frame.origin.x + someOtherView.frame.size.width, someOtherView.frame.origin.x + someOtherView.frame.size.height);

3次元のベクトルまたは行列を使用する場合、これはさらに厄介になる可能性があることに注意してください。

書き直された例:

CGRect frame = someOtherView.frame;
CGPoint origin = frame.origin;
CGSize size = frame.size;
CGPoint point = CGPointMake(origin.x + size.width, origin.x + size.height);

これは小さな画面に収まり、IDEを使用したデバッグや標準出力への書き込みが容易になり、メソッド/プロパティ呼び出しのコストによってはさらに高速になる場合があります。もちろん、これは少し強制されます。ほとんどの実際の例はもっと複雑です...


4

常にではない。

別のビューを追加するだけで、コードを読むときに、行全体を読まなくてもコード行が何をしているのかを知ることができます。メソッド名を読み取ることはできるが、メソッドパラメーターが画面からあふれている場合は、通常、メソッド名だけでそのコード行の意図を知ることができるので、大騒ぎする必要はありません。数行のコードが画面からあふれた場合、よりコンパクトなコードを作成するには、時々(重要な単語を)水平方向にスクロールしなければならないというトレードオフに値すると思います。どのコードがどのステートメントに対応するかを頭の中でつなぎ合わせる必要があるため、複数行の単一ステートメントコードが邪魔になることがあります。

多くの場合、水平にあふれるコードの行には、重要なビットが左側(表示)に、重要度の低いビットが右側(画面外)にあります。次の行の視覚的に重要な左側のスペースを占める長すぎる行のコードの重要度の低いビットを使用する代わりに、各行の重要なビット。

そうは言っても、私は確かにあまり頻繁に水平にスクロールしたくはないでしょうが、このようなワイドスクリーンのモニターの時代にはこれほど問題が少ないことに気付きました。


2
一部のプログラムビットが他のビットよりも重要であることを知りませんでした。そのようにして生産性を向上させようとします:重要なビットのみをコーディングします。
-mouviciel

1
@mouviciel、コードの左側がより重要であることではありませんが、コードの行の意味を理解する上で、意味よりもコードの左側が重要です。コードをスキャンするとき、次の行に進む前に、行の最初の部分だけを読んで何が行われるかを理解することがよくあります。
クリスナイト

1
私にとって、メソッドに渡される引数はメソッド名と同じくらい重要です。その情報を残すことは、コードがそれを理解する以上に何をするかを推測することにつながります。
-mouviciel

1

はい、そうです。

ちなみにヒント。複数行の文字列(実質的にすべてのスクリプト言語に含まれる)を含む言語を使用していて、長いSQLが含まれている場合、SQLの一貫したフォーマットルールを使用してSQLを複数行の文字列に入れると読みやすくなります。私が使用しているフォーマットスタイルについては、http://bentilly.blogspot.com/2011/02/sql-formatting-style.htmlを参照してください。


1

いいえ、そうではありません。

エディターがいます。行の折り返しだけでなく、行の折り返しのインデントもあります(画面の幅が100文字である場合)。

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

として表示する

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut 
    labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco 
    laboris nisi ut aliquip ex ea commodo consequat.

または、現在の言語のデフォルトとして設定されているインデントレベルを使用します。

私の画面よりも広い行では、手動で行ラップインデントされたコードに比べてコードが読みにくくなることはありません。

編集:ooooh、私はこの答えが人気がないことを知っていました:)


2
よかったね。しかし、この機能を持たないエディターに切り替える必要がある場合はどうしますか?

1
@dunsmoreb:30年前に書かれたソースコードで作業し、正しい選択のないレガシープラットフォームで作業しない限り、ワードラップさえもサポートしないほど古いエディターに切り替える理由は何ですか?編集者)?
Arseni Mourzenko

MainMa、私はあなたの行ラップインデント機能について言及しています。

@dunsmoreb:公平を期すために、長い行が一般的でない場合は、ワードラップだけでも十分です
アマラ

7
エディターが行を折り返すことができるからといって、読みやすくするために最も論理的な場所に折り返すとは限りません。
クレイジュ

0

確かにそうです。新聞や雑誌がコラムを使用する理由があります。可読性は重要な要素です。私たちの目を読むとき、比較的小さな左右の動きで下にスキャンします。その効果は、目が読んでいるものを素早くスキャンできるようにすることです。

画面の幅の広い列に表示されている場合でも、目をすばやく前後にスキャンする必要があります。スキャンバックしている間、私たちは本当に何も理解していません。これにより、読み取りと理解が著しく遅くなります。その効果は、古い機械式プリンターに似ています。多くの場合、キャリッジリターンの後にいくつかのヌル文字を挿入して、キャリッジまたはプリントヘッドが次の行に再配置する時間を確保する必要がありました。

さらに、垂直レイアウトは通常、行のコンテンツのグループ化を明確にする方法で行われます。これは通常、複合論理条件にのみ適用されます。長い数式は、一連のステートメントとしてより適切に構成できます。(オプティマイザーは余分なオーバーヘッドを修正し、一部のオプティマイザーは複雑な数式をあきらめるか、パフォーマンスが低下します。)

大きな線を必要とする複数のドットを持つ識別子は、修正する必要があるコーディング手法を示します。


0

マウスホイールを使用すると、垂直方向に高速でスクロールできます。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.