タグ付けされた質問 「indentation」

14
コードエディタは、インデントを使用せずに、コードのネストレベルを効果的に示唆できますか?[閉まっている]
同じXMLテキストに2つの表示オプションを提供するXMLテキストエディターを作成しました。1つはインデント(仮想)、もう1つは左揃えです。左寄せビューの動機は、XMLコンテキストの自動化された副作用であるインデントの干渉なしに、ユーザーがプレーンテキストまたはXPathコードのインデントに使用している空白文字を「見る」のを支援することです。 私は、ユーザーを支援する左寄せモードの視覚的な手がかりを(エディターの編集不可部分で)提供したいと思いますが、あまり複雑になりません。 接続線だけを使用してみましたが、それは忙しすぎるようでした。私がこれまでに思いついた最高のものは、下のエディターのモックアップされたスクリーンショットに示されていますが、私はより良い/より簡単な代替手段を探しています(コードをあまり必要としません)。 [編集] ヒートマップのアイデア(@jimpから)を取得すると、これと3つの選択肢が得られます-a、b、cというラベルが付けられています。 次のセクションでは、受け入れられた回答を提案として説明し、他の多くの回答やコメントからアイデアを集めます。この質問は現在コミュニティwikiであるため、お気軽に更新してください。 NestView インデントを使用せずにネストされたコードの可読性を向上させる視覚的な方法を提供するこのアイデアの名前。 等高線 NestView内の異なる影付きの線の名前 上の画像は、XMLスニペットを視覚化するために使用されるNestViewを示しています。この図ではXMLを使用していますが、この図ではネストを使用する他のコード構文も使用できます。 概要: 等高線は、ネストレベルを伝えるために(ヒートマップのように)シェーディングされています 等高線は、ネストレベルが開いているか閉じているかを示すために角度が付けられています。 等高線は、ネストレベルの開始点を対応する終了点にリンクします。 等高線の幅を組み合わせることで、ヒートマップに加えて、ネストレベルの視覚的な印象が得られます。 NestViewの幅は手動でサイズ変更できますが、コードが変更されても変更しないでください。これを維持するために、輪郭線を圧縮または切り捨てることができます。 空白行は、テキストをより消化しやすい塊に分割するためにコードを使用する場合があります。このような行は、NestViewで特別な動作をトリガーする可能性があります。たとえば、ヒートマップをリセットしたり、背景色の等高線を使用したり、あるいはその両方を行うことができます。 現在選択されているコードに関連付けられている1つ以上の等高線を強調表示できます。選択したコードレベルに関連付けられた等高線が最も強調されますが、ネストされたグループを強調表示するのに役立つ他の等高線も「点灯」できます。 さまざまな動作(コードの折り畳みやコードの選択など)を、等高線のクリック/ダブルクリックに関連付けることができます。 等高線の異なる部分(リーディングエッジ、ミドルエッジ、またはトレーリングエッジ)には、異なる動的な動作が関連付けられている場合があります。 等高線上のマウスホバーイベントでツールチップを表示できます。 NestViewは、コードが編集されると継続的に更新されます。ネスティングのバランスが取れていない場合、ネスティングレベルが終了する場所を想定できますが、関連する一時的な等高線は警告として何らかの方法で強調表示する必要があります。 等高線のドラッグアンドドロップ動作をサポートできます。動作は、ドラッグされる等高線の部分によって異なる場合があります。 エラーや状態の変更のための行番号付けや色の強調表示など、一般的に左マージンにある機能は、NestViewにオーバーレイする可能性があります。 追加機能 この提案はさまざまな追加の問題に対処します。多くは元の質問の範囲外ですが、有用な副作用です。 ネストされた領域の開始と終了を視覚的にリンクする 等高線は、ネストされた各レベルの開始点と終了点を接続します 現在選択されている行のコンテキストを強調表示する コードが選択されると、NestViewの関連するネストレベルを強調表示できます。 同じネストレベルでコード領域を区別する XMLの場合、異なる名前空間に異なる色相を使用できます。プログラミング言語(c#など)は、同様の方法で使用できる名前付き領域をサポートします。 ネスト領域内の領域を異なる視覚ブロックに分割する 読みやすくするために、コードに余分な行が挿入されることがよくあります。このような空のラインは、NestViewの等高線の彩度レベルをリセットするために使用できます。 複数列のコードビュー インデントなしのコードは、ワードラップまたは水平スクロールが必要になる可能性が低いため、複数列ビューの使用をより効果的にします。このビューでは、コードが1つの列の下部に到達すると、次の列に流れます。 視覚的な補助を提供するだけではありません 概要で提案されているように、NestView は、TreeViewコントロールに期待されるものとほぼ一致する幅広い編集および選択機能を提供できます。主な違いは、一般的なTreeViewノードには、エキスパンダーとノードアイコンの2つの部分があることです。NestViewの輪郭線には、オープナー(傾斜)、コネクタ(垂直)、およびクローズ(傾斜)の3つの部分があります。 インデントについて NestViewは、インデントされていないコードを補完しますが、従来のインデントされたコードビューを置き換えることはほとんどありません。 NestViewを採用するソリューションは、空白文字を含むコードテキスト自体に影響を与えることなく、インデントされたコードビューとインデントされていないコードビューをシームレスに切り替える方法を提供する可能性があります。インデントビューのテクニックの1つは「仮想フォーマット」です。タブまたはスペース文字の代わりに動的な左マージンが使用されます。NestViewを動的にレンダリングするために使用される同じネストレベルのデータは、より従来型のインデントビューにも使用できます。 印刷 インデントは、印刷されたコードを読みやすくするために重要です。ここでは、タブ/スペース文字と動的な左マージンがないため、テキストは右マージンで折り返されても、インデントされたビューの整合性が維持されます。行番号は、コードがワードラップされる場所とインデントの正確な位置を示す視覚的なマーカーとして使用できます。 画面の不動産:フラット対インデント NestViewが貴重な画面の不動産を使用するかどうかの質問に対処します。 等高線は、コードエディターの文字幅と同じ幅でうまく機能します。したがって、12文字幅のNestView幅は、等高線が切り捨て/圧縮される前に12レベルのネストに対応できます。 インデントビューが各ネストレベルに3文字幅を使用する場合、ネストが4レベルのネストに達するまでスペースが節約されます。このネストレベルの後、フラットビューには、各ネストレベルで増加するスペース節約の利点があります。 注:コードには4文字幅以上のインデントが推奨されることがよくありますが、XMLは多くの場合それよりも少なく管理されます。また、仮想フォーマットでは、配置の問題のリスクがないため、使用するインデントを少なくすることができます …

22
タブとスペース-あらゆる状況において、あらゆるものに適切なインデント文字は何ですか?[閉まっている]
drupal.orgでホストされているコードのコーディング標準では、2つのスペースを使用してコードをインデントすることを推奨しています。他のサイトでは、タブを使用してコードをインデントすることを推奨しています。 あらゆる状況、あらゆる状況で適切なインデント文字は何ですか?答えを説明してください。

12
弾性タブストップの欠点は何ですか?[閉まっている]
ここを見てください:タブとスペースの典型的な聖戦。 弾性タブストップをご覧ください。すべての問題が解決し、非常に便利な新しい動作が多数追加されました。 弾性タブストップは、タブ対スペースの議論でも言及されていますか?何故なの?弾力性のあるタブストップのアイデアには非常に深刻な欠点があり、誰もそれを人気のあるエディターに実装したことはありませんか? 編集:「なぜ彼らは言及されていない」にあまりにも重点を置いて謝罪します。それは本当に私が意図したものではありませんでした。その質問はおそらく話題外です。私が本当に言っているのは、明らかに有益なアイデアのより広範な採用を妨げるこの最大の欠点は何ですか?(すべてがすでにそれをサポートしている理想的な世界で) (そこには、Microsoft Connectのリクエストすでにだ判明弾性タブストップのVisual Studioの実装は、およびEclipseの要求はあまりにも。プラスについて尋ねる質問があります弾性タブストップを実装する他のエディタは)


3
コードインデントの起源
コードインデントを導入したユーザーと、導入された時期と場所を調べることに興味があります。 コードを理解することはとても重要に思えますが、普遍的ではありませんでした。ほとんどのFortranおよびBasicコードはインデントされていない(ですか?)ため、Cobolでも同じことが言えます。 連続した行折り返しのテキストとして書かれた古いLispコードを見たことさえあると確信しています。それを解析するためだけに頭の中の括弧を数える必要がありました。 では、このような大きな改善はどこから来たのでしょうか?私はその起源の言及を見たことがありません。 元の使用例とは別に、私はインデントの元の議論も探しています。

8
ループ内にループを持つことはどの時点でタブーですか?
ちょっと興味があるんだけど。Linus Torvaldsからこれを読んだので、私が今までに持っていたほとんどはforループ内のforループでした。 タブは8文字であるため、インデントも8文字です。インデント4(または2!)の文字を深くしようとする異端運動があります。これは、PIの値を3に定義しようとすることに似ています。 理論的根拠:インデントの背後にある全体的な考え方は、制御ブロックの開始位置と終了位置を明確に定義することです。特に、20時間連続して画面を見ていると、大きなインデントがある場合にインデントがどのように機能するかを簡単に確認できます。 現在、一部の人々は、8文字のインデントがあると、コードが右に移動しすぎて、80文字の端末画面で読みにくくなると主張します。 その答えは、3レベル以上のインデントが必要な場合、とにかくねじ込まれてしまい、プログラムを修正する必要があるということです。 https://www.kernel.org/doc/Documentation/CodingStyle 私は、ループの3番目の層に行くことは受け入れられない慣行であり、コードを再構築すると考えました(主にQt)。 Linusは冗談を言っていましたか? 言語やアプリケーションに依存しますか? 3レベル以上のループが絶対に必要なものはありますか?

5
再フォーマットとバージョン管理
コードのフォーマットが重要です。インデントさえ重要です。そして、小さな改善よりも一貫性が重要です。ただし、プロジェクトには通常、1日目から明確で完全で検証可能で強制的なスタイルガイドがなく、大きな改善がいつでも届きます。たぶんあなたはそれを見つける SELECT id, name, address FROM persons JOIN addresses ON persons.id = addresses.person_id; /として書かれた方が良い SELECT persons.id, persons.name, addresses.address FROM persons JOIN addresses ON persons.id = addresses.person_id; クエリに列を追加する作業中。これは、コード内の4つのクエリすべての中で最も複雑なものか、数千ものクエリの中でささいなクエリかもしれません。移行がどれほど困難であっても、価値があると判断します。しかし、主要なフォーマットの変更全体でコードの変更をどのように追跡しますか?あきらめて「これが私たちが再び開始するポイントです」と言うか、リポジトリ履歴全体のすべてのクエリを再フォーマットすることができます。 Gitのような分散バージョン管理システムを使用している場合は、最初のコミットに戻り、そこから現在の状態に変更できます。しかし、それは多くの作業であり、作業中は他のすべての人が作業を一時停止する必要があります(または、すべてのマージの母親に備える必要があります)。すべての結果の中で最高のものを提供する履歴を変更するより良い方法はありますか? すべてのコミットで同じスタイル 最小限のマージ作業 ? 明確にするために、これはプロジェクト開始時のベストプラクティスに関するものではなく、大規模なリファクタリングがGood Thing™と見なされたが、追跡可能な履歴が必要な場合に何をすべきかを示しています。バージョンが常に同じように動作することを保証する唯一の方法である場合、履歴を書き換えることは素晴らしいことではありませんが、クリーンな書き換えの開発者の利点はどうですか?特に、書き換えたバージョンが元のバージョンとまったく同じように機能することを保証する方法(テスト、構文定義、またはコンパイル後の同一のバイナリ)がある場合はどうでしょうか?

9
深いインデントを防ぐ方法は?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 閉じた3年前。 コードの深いインデントを防ぐために、どのような手順と対策を講じることができますか?

8
複合AND / OR ifステートメントのスタイル設定
読みやすくするために、複雑な複合AND / OR ifステートメントをどのようにスタイルしますか?どのようにインデントし、改行をどこに配置しますか?私の特定の状況は次のようなものです。すべてを1行に分割するよりも間違いなく優れていますが、それでも面倒です。 if ( ( x == y && a != b && p.isGood() && ( i + u == b || q >= a ) ) || k.isSomething() || m > n ) { doSomething(); }

5
一部の言語でタブではなくスペースの使用が推奨されるのはなぜですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 5年前休業。 たぶん私はこれだけですが、タブではなくスペースを使ってインデントする人を困らせることはほとんどありません。タイピングはタイピングSpaceSpaceSpaceSpaceよりも簡単で直感的Tabですか?確かに、タブの幅は可変ですが、スペースよりもインデントスペースの方がはるかにわかりやすくなっています。同じことがバックスペースにも当てはまります。1回または4回バックスペースしますか? Pythonのような言語でタブの上にスペースを使用することが推奨されるのはなぜですか?

3
多言語ファイルのインデント[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 複数の言語を含むファイル(テンプレートファイルなど)で、インデントに関するベストプラクティスはありますか? 私は主にこれを使用します: <div> IF FOO <div> <p>contents> </div> END FOO </div> 言語に関係なく、新しいブロックごとにインデントします。ただし、これにはいくつかの欠点があります。より複雑なファイルでは、どちらかの言語のインデントを壊す可能性があります: <div> IF FOO <div someattribute> ELSE <div otherattribute> END FOO <p>content</p> </div> </div> 私はこれが使用されるのを見たこともあります: <div> IF FOO <div> <p>contents> </div> END FOO </div> つまり。1つの言語のみインデントします。これには常に一貫性があるという利点がありますが、より複雑なファイルでは、ブロックが条件付きであることなど、一部の実装の詳細をほぼ完全に隠すことができます。 ここでの目標は、明らかに読みやすさを最大化することです。

4
インデント/空白についてはどの程度厳しくすべきですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 私たちの開発プロセスは次のとおりです タスクのコーディング->他の誰かのQAコードとドキュメント->タスクはトランクにマージされます。 最近、インデントと空白の問題のために、同僚がコードQAの合格を拒否しています。 これらの問題の例を次に示します(構文はSAS)。 追加の空白: %if &syserr gt 0 %then %goto err; /*last line of code*/ /* Footer area*/ 余白の余分な行、およびproc sort内でインデントされていない: /* End Of header * * * * * * * * * * * * * * * * * * * * * * …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.