問題タブ [readability]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 多くのパラメーターを持つ長い文字列の String.Format の最も読みやすい使用法は何ですか?
例えば:
これでは非常に読みやすいコードにはなりません。また、追加されるパラメータが増えるにつれて、見栄えが悪くなり、どのパラメータがどのスロットに入るかを見つけるのが難しくなります。
これは初歩的な質問であることはわかっています。テキストを読みやすくする方法を尋ねているだけだと思いますが、これを行うためのより良い方法があれば、それも知りたいです。
c# - どのコードがより読みやすいですか?
2つのメソッドbool Foo()
とがありbool Bar()
ます。次のうちどれがより読みやすいですか?
また
一方では、短絡&&
は便利な機能であり、2番目のコードサンプルははるかに短いと思います。一方で、一般的に&&
条件文の外を見ることに慣れているかどうかわからないので、それが最初のサンプルをより良い選択肢にする認知的不協和をもたらすのではないかと思います。
どう思いますか?決定に影響を与える他の要因はありますか?たとえば、&&
式が画面に収まる1行より長い場合、前者を優先する必要がありますか?
回答後の説明:
答えが持ち出した最初の質問に含めるべきだったいくつかのこと。
Bar()
よりも実行に費用がかかる可能性がありますFoo()
が、どちらの方法にも副作用はありません。- この例のように、メソッドにはどちらもより適切な名前が付けられています。
Foo()
要約すると、次のようなものにCurrentUserAllowedToDoX()
なりBar()
ます。XCanBeDone()
naming-conventions - 読みやすさを命名するブールメソッド
読みやすさの観点から、ブールメソッドにどのメソッド名を好むかという簡単な質問:
また:
また:
actionscript-3 - 読みやすくするために実際のデータ構造としてラベル付けされた Actionscript 'Object'
したがって、actionscript 3 では、Object クラスのインスタンスを連想配列として使用できます。
いくつかのクラスがあり、そのメンバーの 1 つは、私のコレクションを含む読み取り専用の「オブジェクト」であるとします。
この「オブジェクト」を返すと、コードの可読性が大幅に低下すると思います。誰かがそれがコレクションであることを知る唯一の方法は、コードまたはコメントを読むことです...
オブジェクトが単純なオブジェクトではなくコレクションであることを知らせる最良の方法は何ですか?
オプション:
「AssociativeArray」などと呼ばれるオブジェクトから拡張するだけの動的クラスを作成して、コードが読みやすくなるようにします...
AS3 Datastructures Libraryのようなものを使用しますが、これは少しやり過ぎのように思えます。
変数名の末尾に Collection という単語を追加するだけですか?
例えば:
どう思いますか?
更新: Dictionary を拡張するカスタム クラスを使用することにしました。このようにして、検索関数hasOwnPropertyを賢明なアクセス関数でラップし、クラスに意味のある名前を付けることができます。
私が Object よりも Dictionary を選んだ理由は 2 つあります。
- ディクショナリは、コレクションをより直感的に理解します
- Dictionaryは、検索のために O(1) で実行されるようです。このかなり非公式の辞書と配列とオブジェクトのパフォーマンス ベンチマークを参照してください
java - 正規表現の代替 (流暢な?) インターフェイスの設計
Java の巨大な正規表現を見て、正規表現全般の保守性について少し考えさせられました。ほとんどの人は (一部の悪意のある perl モンガーを除いて)、正規表現はほとんど保守できないことに同意すると思います。
どうすればこの状況を改善できるかを考えていました。これまでのところ、私が持っている最も有望なアイデアは流暢なインターフェイスを使用することです。例を挙げると、次の代わりに:
このようなものを書くことができます
この非常に短い例では、正規表現を作成する一般的な方法は、凡庸な才能のある開発者なら誰でも理解できるものです。ただし、それぞれ 80 文字で 2 行以上を埋める不気味な表現について考えてみてください。確かに、(冗長な) 流暢なインターフェースには 2 行だけではなく数行が必要ですが、はるかに読みやすい (したがって保守しやすい) と確信しています。
今私の質問:
正規表現に対する同様のアプローチを知っていますか?
このアプローチは、単純な文字列を使用するよりも優れていることに同意しますか?
API をどのように設計しますか?
あなたのプロジェクトでそのようなきちんとしたユーティリティを使用しますか?
これを実装するのは楽しいと思いますか? ;)
編集: 単純な構造よりも高いレベルにあるメソッドが存在する可能性があると想像してください。たとえば、正規表現にはありません。
編集 - コメントの短い要約:
RegexBuddy - あなたのコードを読みやすくするために 30 ユーロを費やしてください (なんてこった?! そのような製品の純粋な存在は私の論文が正しいことを証明します - 私たちが今日知っている正規表現は悪いことです (tm))
Martin Fowler のアプローチ(まだ完璧にはほど遠い)
ほとんどの人が正規表現は定着すると考えているのは興味深いことですが、正規表現を読むにはツールが必要であり、正規表現を保守可能にする方法を考えるには賢い人が必要です。流暢なインターフェイスが最善の方法であるかどうかはわかりませんが、賢明なエンジニアがいると確信しています-私たち? ;) - 正規表現を過去のものにするために時間を費やす必要があります - 50 年間私たちと一緒にいるだけで十分だと思いませんか?
懸賞金を開く
報奨金は、正規表現への新しいアプローチの最良のアイデア (コードは不要) に授与されます。
編集 - 良い例:
これが私が話しているパターンの種類です-最初に翻訳できた人への追加の称賛-RegexBuddiesが許可されました(これはApacheプロジェクトからのものです)chiiとmezに与えられた追加の称賛:これはRFC準拠の電子メールアドレス検証パターンです-ただし、RFC822 ( ex-parrot.comを参照) であり、5322ではありません - 違いがあるかどうかはわかりません - もしそうなら、5322 に適合するパッチに次の追加の称賛を与えます ;)
javascript - JavaScript で複数行の文字列を記述する最もクリーンな方法は何ですか?
改行を追加する必要はありません。読みやすいものを追加するだけです。
これより良いものはありますか?
c# - プロパティ、イベント、関数、関数のオーバーライドなどを C# クラスに配置する順序は?
新しい C# クラスを作成するとき、プロパティ、イベント デリゲート、関数、関数のオーバーライドなどを宣言するための最適な論理的順序と、その順序を決定する際に考慮すべき考慮事項について確信が持てません。
通常、WebUserControl のコード ビハインド クラスを作成するときは、次の順序で配置します。
- イベント
- プロパティ
- ライフ サイクル イベントのオーバーライド関数
- その他の機能
これを行うためのより論理的な方法はありますか?また、クラス ファイル内でクラスのこれらの要素を順序付ける方法を決定する際に、どのような考慮事項を考慮する必要がありますか?
python - この Python コードをより使いやすく読みやすくするにはどうすればよいですか?
Python初心者ですが、プログラミング歴は5年ほどです。オブジェクト指向のやり方について学ぶことはたくさんあると思いますが、基本は知っています。私は計算機をプログラミングして、それが課題に対応し、そこから得られる知識を示すことを計画しました。私は始めたばかりで、これが私が持っているものであり、私には本当に醜いように見えます. どうすれば違う方法でしたか?
PS これは、括弧内から問題を取得し、それを合計し、作業を表示してから、完全な問題を評価する単純なスクリプトです。
ruby - この 6 行のメソッドをリファクタリングして読みやすくするにはどうすればよいですか?
ここで、このばかばかしいほど醜いメソッドをクリーンアップしようとしています。これはリファクタリングを求めていますが、どのような構造がこれに最適なのかわかりません (つまり、case ステートメント、または単に慎重にフォーマットされたif then
ステートメント) 。
一見すると、適切に配置されたいくつかwhen
の 's を持つ case ステートメントの理想的な場所のように見えますが、私の理解では、case ステートメントは 2 つではなく 1 つの変数に対してのみ使用でき、irb をさまざまにいじることができます。ハッシュまたは配列を使用してこれらのステートメントを試すことは、ここでもあまり光を当てていません。
これをどのように行いますか?このような複数のブール値をチェックするときに、このようなコードを回避するための Ruby の一般的なトリックはありますか?
query-string - クエリ文字列-行IDまたは人間が読み取れる値を使用しますか?
私はフォームを作成していますが、より人間が読める形式で値を表示することに大きな利点があるのではないかと思います。例えば:
index.php?user = ted&location = newyork
それよりも:
index.php?user = 23423&location = 34645
一方では、クエリ文字列をもう少し読みやすくすることで、ユーザーと検索エンジンはそれらがどこにあるかをよりよく理解できますが、関連する行を追跡する必要があるため、サーバー側でもう少し作業が必要になります一意のID以外のものを介して。
たとえば、id
を必要とする他の行で作業できるようになる前に、まず「newyork」のが何であるかを見つけますlocation_id
。私は常にdbにできるだけ少ない作業を与えることを好みます。
編集:読みやすさで行くことにしました。必要に応じて、いつでもmysqlクエリキャッシュを使用して処理を高速化できると思います。