web-dev-qa-db-ja.com

コードブロックでテキストをどのように折り返す必要がありますか?

モバイルデバイスでコードが表示されるアプリケーションに取り組んでいます。長い行のあるコードでは、水平スクロールは望ましい選択ではないため、幅が制限されています。そのため、テキストをコードブロックで強制的にラップする必要があります。 2つのオプションがあります。

単語の分割-単語全体だけが分割されます。これには単語全体を簡単に見ることができるという利点がありますが、視覚的に理想的とは言えない状況(ここに示すように)があります。

break Word example

Break all-これがWordの途中にあるかどうかに関係なく、任意のポイントで中断します。これはよく見える(主観的)傾向がありますが、長い単語では問題になる可能性があります(ここに示すように)

break all example

programmersにはどのオプションが適していますか、そしてその理由は?

10
JohnGB

プログラマーとして、私は単語の境界で改行することを好みます(改行が必要であるというあなたの評価が正しいと仮定します)。

しかし、私はあなたが壊れる方法を変えます。列0から継続するのではなく、分割する行と同じ列から継続する必要があると思います。また、それ自体は実際の行ではなく、前の行の継続であることを非常に明確に示す必要があります。行番号だけでは完全にうまくいきません。何かのようなもの:

mockup

download bmml sourceBalsamiq Mockups で作成されたワイヤーフレーム

残りの問題は、スペースのようなシンボルが改行で見つけにくいことです。そのようなシンボルはコードに非常に関連している可能性があるので、私はそれを考える必要があると思います。おそらく、スペースが中断する位置として使用された場合、スペースもいくつかの特別なシンボルを取得して、行の最後または最初のいずれかに表示されたままになるはずです。

14
André

単語/名前を分割することは、関数名がどこで始まりどこで終了するのかわからないという単純な理由で悪い考えです。名前は抽象的である可能性があり、脳をつなぎ合わせるのがさらに困難になります。

最初のものはより自然に感じられ、読みづらいですが、テキストが折り返されていることをすぐに理解でき、解読し始めます。 2番目は、解読するのがほとんど不可能です。コードをコピーしてどこかに貼り付けて、完全な関数名が何であるかを再確認します。

7
Jason

1つのオプションは、コードコンテナーに最小幅を設定し、ユーザーに水平方向にスクロールさせることです。予期せず折り返されるコードは、せいぜい混乱しやすく、Pythonなどの言語では完全に壊れて表示されます(これは、コード要素の親のoverflow-x: autoまたはscrollになります) CSSでは) 80の等幅文字 がデフォルトの行の長さであることがよくあります。

5

私は、音節(またはソフトハイフン)以外の単語を分割するラッピングアルゴリズムについて聞いたことがありません。したがって、任意の文字で単語を分割することは、お勧めできません。

プログラマにとって、コード内の単語は識別子や演算子などです。これらは全体としてのみ意味があります。したがって、このコンテキストでは、音節を分割することさえお勧めできません。

4
Marjan Venema

切り替えを行います:Linebreak [yes]または[no]。

表示されているプログラミング言語に応じて、挿入された改行はコードの実行を変更します。コードを新しい行に分割したら、行末に改行文字を追加してこれを示します。

トグルを使用すると、アプリケーションのユーザーにテキストを折り返すかどうかのオプションを与えることができます。

さらに、行番号を表示します。行が折り返されている場合、2行目は行番号表示の新しい行であってはなりません。これにより、読者がすべて1行になっていることがわかるようになります。

2
MHD

developersを含むhum​​ansのラッピングの良い方法を知っています。最初の方法。あなたは言葉を壊しません。単語を壊してしまうと、もう読めなくなります。折り返し点に達したら、矢印のような記号rightを右側に置くことで、線が続くことを明確にすることができます。素敵なテキストエディターがそれを行います。

2

少年はこれは岩であり、難しい場所です。 間違いなく単語はそのままにしてください。プログラマーがこれを好きになることはありません(すでに明らかです)。インデントがつぶれているため、あまりにも多くの情報が削除されています。言葉を壊してもこれは解決されず、他の問題が追加されます。

悪い状況を最大限に活用するには、を明確に描く必要があります。あなたの例では、ゼブラストライプを使用してを描きますが、何らかの理由で、各行の下部に単純な1px行line-理由を説明できません。

そして、それはPythonコードの例のようになります。インデントを変更することにより、Python code?ほとんどの言語はインデントを構文要素として使用していませんが、Pythonはそうした言語の1つです。ほとんどの言語では、インデントをいじくるのは大きな不便です(しかし、正確な意味は変更されません)しかしPythonの場合は破壊的です(意味が変更されるか、コードが無効になる可能性が高くなります。)したがって、このコード表示がPythonこれらの制限の原因となったパス(水平スクロールなしなど)を再考したいと思うかもしれませんが、Pythonを含むコードを表示することは本当に悲惨なことだと思いますインデントがめちゃくちゃになりました。

2
obelia

コード内に空白が意味的に重要ではない場所がある場合、実用的な場合は、改行などをそのような場所に制限する必要があります。そのような場所がない場合、またはそれらの間の距離が行の長さの約3分の1を超えることが多い場合、固定長の行で等幅フォントを使用し、どの行にあるかを示すためにいくつかの手段を使用することをお勧めしますscreenは前の行の続きです(たとえば、各「実際の」行の前に小さいフォントで行番号を付けます。行番号がない場合は、その行が前の行の単なる続きであることを示します)。

多くのマイクロコンピュータBASICシステムと同様に、文字ベースの行の折り返しは見苦しいことがよくありますが、小さな画面が必ずしも優れた代替手段を提供するとは限りません。このようなシステムの良い点の1つは、行の長さが固定されている場合、 24文字です。文字列の長さを判断するために使用できます。正確に80文字:3行+ 8文字である必要があります。プロポーショナルフォントまたはWordベースのラッピングを使用するシステムは役立つ場合がありますが、このような文字カウントタスクは、1行に固定幅の固定文字数を表示するシステムよりもはるかに困難になります。

0
supercat

私はプログラマーであり、したがって意見を持つ権利があります。2番目の方法(「すべてを折り返す」ラッピング)を使用します。

どうして?まあ、いくつかの理由があります。まず、最初のオプションは常にアクセスできるとは限りません。誰かが_another_veeeeery_long_function_name_を思い付くでしょう。これは、その行に他に何もない場合でも、行に収まりません。

第二に、プログラミング言語(特にPython)では空白が重要です。特に、Python=では、各改行は新しいコマンドを開始します。したがって、改行を自由に挿入すると、読みやすさがかなり損なわれます。最初の例では、def自体は無意味であるため、おそらくワードラップが発生しました。ただし、ラップされた式が2つの個別のコマンドとして誤って解釈される例があります。たとえば、x = 1, very_long_function_name()を検討します(この場合、_x = 1,_は完全に有効なステートメントです)単一要素のタプルを作成します。もちろん、行番号とストライプは、行の境界にいくつかの手がかりを追加しますが、ウィンドウの境界に走る行の視覚的な外観は、はるかに強い手がかりです。

もちろん、任意の場所で壊れた識別子が読めなくなるという懸念はもちろんあります。アフォーダンスを改善するために、私は次の3つの変更を提案します。(1)単語の折れ線内の行間距離を短くする(「論理」行間の行距離が「可視」行間の行間距離より大きくなるように)。 (2)ハイフン記号(またはその他の記号)を追加して、識別子が壊れたことを示します。ほとんどの言語では識別子にハイフンを含めることができず、色によってマイナス記号と区別されるため、これは一義的である必要があります。 (3)折り返された行は同じインデントレベルで継続する必要があるため、ブロック境界を簡単にたどることができます。

example

0
Pasha