タグ付けされた質問 「coding-style」

コーディングスタイルは、ソースコードの読みやすさと理解に役立つ一連のガイドラインです。

6
幻のコードの複製
通常の本能は、コードに表示されるコードの重複を削除することです。しかし、複製が幻想的である状況にいることに気づきました。 より詳細に状況を説明するために:私はWebアプリケーションを開発していますが、ほとんどのビューは基本的に同じです-ユーザーがスクロールして選択できるアイテムのリスト、選択したアイテムを含む2番目のリスト、および「保存ボタンをクリックして、新しいリストを保存します。 問題は簡単なように思えました。ただし、それぞれのビューには独自の癖があります-場合によっては何かを再計算する必要があり、時には追加のデータなどを保存する必要があります。これらは、メインロジックコードにコールバックフックを挿入することで解決しました。 基本的にすべての機能にコールバックを提供する必要があり、メインロジックはコールバック呼び出しの巨大なシーケンスのように見えるため、ビューには非常に多くの微細な違いがあります。すべてのビューには実行される独自のコードがあり、すべてコールバックで実行されるため、最終的には時間やコードを節約しません。 問題は次のとおりです。 違いは非常に小さいため、コードはすべてのビューでほぼ同じように見えますが、 非常に多くの違いがあるので、詳細を見るとき、コードを書くことは少し似ていません この状況にどのように対処すればよいですか? コールバックコールのみで構成されたコアロジックを持つことは良い解決策ですか? または、コードを複製して、コールバックベースのコードの複雑さをなくすべきですか?


10
どのような場合に、コードが少ないほど良くないのですか?[閉まっている]
私は最近仕事でいくつかのコードをリファクタリングしました、そして私は良い仕事をしたと思いました。980行のコードを450行に落とし、クラスの数を半分にしました。 これを同僚に見せたとき、これが改善であることに同意しなかった人もいました。 彼らは言った-「より少ないコード行が必ずしも良いとは限らない」 人々が本当に長い行を書いたり、いくつかの行を保存するためにすべてを単一のメソッドに入れたりする極端なケースがあるかもしれませんが、それは私がやったことではありません。私の意見では、コードは適切に構造化されており、サイズが半分であるため、理解/保守が簡単です。 仕事を遂行するために必要なコードを2倍にしたい人がいる理由を理解するのに苦労しています。 ?

6
小さな変更を加えてテストし、次に「すすぎと繰り返し」を行うのは悪い習慣ですか?
私は長年の経験を持つプログラマーです。ある習慣があることに気づきました。それが本当に悪い習慣であるかどうかはわかりません。 ソリューションのために実行するタスクのリストを取得します。たとえば、小さな小さなタスクでも このユーザーコントロールのリソースを変更する 別のサイズを変更する 別のユーザーコントロールにHTMLとコーディングを追加する これらのタスクはすべて小規模です。10分以内にできることを意味しますが、小さな変更を加えてからWebブラウザーで何度もテストするという悪い習慣がありました。これは良い習慣ですか? または、一度にすべてを実行してから、一緒にテストする必要がありますか? それが本当に悪い習慣であれば、小さな変更を何度もテストするのに時間を浪費しているように感じるので、どうすれば修正できますか?

9
コードの一貫性とコードの改善の適切なバランスは何ですか?
最近、同僚とコードスタイルについて話し合いました。彼は、コードの外観(ブレースの配置、大文字の使用など)の場合と同じように、APIの使用法と使用している一般的なパターンは、コードベース全体ではなく、周囲のコードとできるだけ似ている必要があると主張していました。たとえば、C#でDAOクラスにメソッドを追加する場合、そのクラスの他のメソッドがそれを使用していない場合でも、コードをクリーンで維持しやすくするために、必要に応じてLINQを使用しようとします。しかし、私の同僚は、そのクラスの既存のスタイルに反するため、そのインスタンスでそれを使用すべきではないと主張し、したがって理解が難しくなります。 最初は私は彼の立場がかなり極端であると感じましたが、しばらく考え直した後、私は彼の主張を見始めています。架空のLINQの例では、同僚がLINQに慣れていないために、おそらくこのクラスには含まれていませんか?もしそうなら、もし私がそれを使わなかったなら、私の仲間の開発者にとって私のコードはより保守しやすいでしょうか?一方、このような手法を使用するとコードがよりきれいになると本当に信じている場合、周囲のコードと大幅に異なる場合でも使用すべきではありませんか? 私の同僚の議論の核心は、私たち全員が異なる方法でコードベースに同様の機能を実装しようとすると、私たちはそれぞれ私たちの方法が「最高」だと思うと、最終的にコード全体が難しくなることだと思う理解する。しかし、現時点では、既存のコードを盲目的にたどりすぎると、時間の経過とともに品質が徐々に低下していくと思います。 では、パターンはどの程度までコードスタイルの一部であり、一貫性を維持することと改善を行うことの間のどこに線を引くべきでしょうか。

11
誰もプロポーショナルフォントを好むのですか?[閉まっている]
私は、プログラミングスタイルに関するウィキペディアの記事を読んでいて、垂直方向に配置されたコードに対する議論に何か気づきました。 等幅フォントへの依存。表形式は、エディターが固定幅フォントを使用することを前提としています。最新のコードエディタのほとんどはプロポーショナルフォントをサポートしており、プログラマは読みやすくするためにプロポーショナルフォントを使用することを好む場合があります。 正直に言うと、プロポーショナルフォントを好むプログラマーに出会ったことはないと思います。また、それらを使用する本当に良い理由も考えられません。なぜプロポーショナルフォントを好むのですか?

7
SOLIDに切り替えた後、大幅に増加したクラスの数を管理および整理しますか?
ここ数年、私たちは少しずつ一歩ずつ、より良い記述コードに徐々に切り替えてきました。私たちはついに、少なくともSOLIDに似たものへの切り替えを始めていますが、まだまだそこにはありません。切り替えを行って以来、開発者からの最大の不満の1つは、以前はすべてのタスクで開発者が5〜10個のファイルを操作するだけで十分だった数十個のファイルをピアレビューおよびトラバースできないことです。 切り替えを開始する前に、アーキテクチャは次のように編成されていました(1〜2桁以上のファイルが付与されています)。 Solution - Business -- AccountLogic -- DocumentLogic -- UsersLogic - Entities (Database entities) - Models (Domain Models) - Repositories -- AccountRepo -- DocumentRepo -- UserRepo - ViewModels -- AccountViewModel -- DocumentViewModel -- UserViewModel - UI ファイルに関しては、すべてが非常に線形でコンパクトでした。明らかにコードの重複、密結合、および頭痛の種がたくさんありましたが、誰もがそれを横断して理解することができました。完全な初心者、つまりVisual Studioを開いたことのない人は、わずか数週間でそれを理解できました。全体的なファイルの複雑さの欠如により、初心者の開発者や新規採用者も、あまり時間をかけずに貢献を始めることが比較的簡単になります。しかし、これはコードスタイルの利点が出てこないところです。 コードベースを改善するためのあらゆる試みを心から支持しますが、このような大規模なパラダイムシフトについて、チームの他のメンバーからプッシュバックを得るのは非常に一般的です。現在の最大のこだわりのポイントは次のとおりです。 単体テスト クラス数 ピアレビューの複雑さ ユニットテストは時間の無駄だと信じており、個々のコードよりも全体としてコードをはるかに迅速に処理テストできると信じているため、チームにとっては信じられないほど難しい販売でした。SOLIDの承認として単体テストを使用することはほとんど無益であり、この時点ではほとんど冗談になりました。 クラス数はおそらく克服すべき最大のハードルです。5〜10個のファイルを使用していたタスクは、70〜100個かかるようになりました。これらの各ファイルにはそれぞれ異なる目的がありますが、膨大な量のファイルが圧倒される場合があります。チームからの反応は、主にうめき声と頭を掻くものでした。以前は、タスクには1つまたは2つのリポジトリ、1つまたは2つのモデル、ロジックレイヤー、およびコントローラーメソッドが必要でした。 単純なファイル保存アプリケーションを構築するには、ファイルが既に存在するかどうかを確認するクラス、メタデータを書き込むクラスDateTime.Now、ユニットテストの時間を注入できるように抽象化するクラス、ロジックを含むすべてのファイルのインターフェイス、ファイルがあります各クラスの単体テストと、DIコンテナにすべてを追加するための1つ以上のファイルを格納します。 中小規模のアプリケーションの場合、SOLIDは非常に簡単に販売できます。誰もが保守性の利点と容易さを理解しています。ただし、非常に大規模なアプリケーションでは、SOLIDの価値提案が見られないだけです。だから私は、組織と管理を改善して、成長する痛みを乗り越える方法を見つけようとしています。 最近完了したタスクに基づいて、ファイルボリュームの例を少し強くしたいと思いました。ファイル同期要求を受信するために、新しいマイクロサービスのいずれかに機能を実装するタスクが与えられました。要求が受信されると、サービスは一連の検索とチェックを実行し、最終的にドキュメントをネットワークドライブと2つの個別のデータベーステーブルに保存します。 ドキュメントをネットワークドライブに保存するには、いくつかの特定のクラスが必要でした。 - …

2
ブール変数のプレフィックスとして常に「is」を使用する必要がありますか?[閉まっている]
isブール変数のプレフィックスとして常に使用する必要がありますか?過去の何かを示すブール値はどうですか?私が書く必要がありますisInitializedかwasInitialized?私は性質のために書くべきですIsManyMembersかHasManyMembers? ベストプラクティスはありますか?または、私はただ英語の規則に従って書くべきですか?

10
「if(0 == value)…」は、害よりも害をもたらすのではないでしょうか?[閉まっている]
これは、他の誰かのコードで見たときに最も嫌いなものの1つです。私はそれが何を意味するのか、なぜこのようにするのかを知っています(「誤って代わりに「=」を入れたらどうなりますか?」)。私にとっては、子供が階段を降りて階段を数えて声を出しているようなものです。 とにかく、これに対する私の議論は次のとおりです。 プログラムコードを読み取る自然な流れを混乱させます。私たち人間は、「値がゼロの場合」ではなく「値がゼロの場合」と言います。 最新のコンパイラーは、条件に割り当てがある場合、または実際には条件がその割り当てだけで構成されている場合に警告を発します。 プログラマーである場合、値を比較するときは二重の「=」を忘れないでください。「!」の入力を忘れることもあります。不平等をテストするとき。

4
if( 'constant' == $ variable)vs. if($ variable == 'constant')
最近、私はPHPで、特にWordPressフレームワーク内で多くのことをしています。私は次の形式の多くのコードに気付いています: if ( 1 == $options['postlink'] ) 期待していた場所: if ( $options['postlink'] == 1 ) これは特定の言語/フレームワークで見られる慣習ですか?前者のアプローチが後者よりも好ましい理由はありますか(処理の観点、または構文解析の観点、あるいは人間の観点からも) それとも単に好みの問題ですか?ある定数に対してテストされる変数項目は左側にあると、テストを実行するときは常に良いと思っていました。「チョコレートがケーキの場合」よりも、「ケーキがチョコレートの場合」という自然言語での質問の方がよく似ているようです。

16
forループ内で、可能であればブレーク条件を条件フィールドに移動する必要がありますか?[閉まっている]
時々、次のようなブレークが必要なループが必要です: for(int i=0;i<array.length;i++){ //some other code if(condition){ break; } } 書くことに不快感を覚える if(condition){ break; } 3行のコードを消費するためです。そして、ループは次のように書き換えられることがわかりました。 ↓ for(int i=0;i<array.length && !condition;i++){ //some other code } だから私の質問は、可能であればコードの行を減らすために条件を条件フィールドに移動するのは良い習慣ですか?


4
#include <iostream.h>が悪いのはなぜですか?
私は別のスレッドを読んでいたが、ある男が初心者向けにC ++の本について尋ね、プログラマーの一人がこれを書いた。 いくつかの警告:「hello world」を示すすべての本を避ける #include &lt;iostream.h&gt; C ++ブックを開いて、上記の例のようなiostreamヘッダーが含まれていることを確認しました。 なぜそれが悪いのですか?C ++を学習するとき、他にどのような留意点がありますか? 背景:私はCに精通しており、次の学期にC ++を学び始めます。

10
インラインスクリプトを避けるべき理由
最近、知識のある友人が私が立ち上げたウェブサイトを見て、「非常にクールなサイト、ソースコードのインラインスクリプトについての恥」などのコメントをしました。 私は間違いなく、インラインスクリプトが発生する場所を削除する立場にあります。私はそれが「悪いこと」であることを漠然と認識しています。私の質問は、インラインスクリプトの本当の問題は何ですか?重大なパフォーマンスの問題がありますか、それともほとんど良いスタイルの問題ですか?インラインスクリプティングの前線で即座にアクションを実行することを上司に正当化できますか?Webサイトにアクセスしてソースコードを覗いてみると、どのような要因が「うーん、ここでのプロフェッショナルな仕事」と言ってしまうでしょうか。 さて、その質問は執筆中に複数の質問に変わりました。しかし、基本的に、インラインスクリプティング-契約は何ですか?

6
`c> = '0'`または` c> = 48`をチェックする方が良いですか?
同僚と話し合った後、ベストプラクティスに従って、Javaでcharデータ型をどのように扱うかについて「哲学的な」質問をしました。 入力としてString 's'が与えられた場合、その中に存在する数字の数を数える必要がある単純なシナリオ(明らかに、これは私の質問に練習の意味を与えるための非常に単純な例です)を想定してください。 これらは2つの可能な解決策です: 1) for(int i=0; i&lt;s.length(); i++) { if(s.charAt(i) &gt;= 48 &amp;&amp; s.charAt(i) &lt;= 57) { n++; } } 2) for(int i=0; i&lt;s.length(); i++) { if(s.charAt(i) &gt;= '0' &amp;&amp; s.charAt(i) &lt;= '9' ) { n++; } } どちらがより「クリーン」でJavaのベストプラクティスに準拠していますか?

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