タグ付けされた質問 「programming-practices」

プログラミングプラクティスは、ソフトウェアの開発で一般的に使用される、またはあまり使用されないプラクティスです。これには、アジャイル開発、かんばん、コーディングのショートカットなどが含まれます。

3
単体テスト、フレームワークの前または後に記述しますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 これが私の最初の質問なので、簡潔にまとめておきます。 単体テストを作成するときは、それらの基礎となるフレームワークを作成する前または作成した後でテストする必要がありますか?これは私のCEOと社長の間の議論で出てきました、そして私はこれについてあなたの意見を望みました。 個人的に、私は常に最初にコードを記述し、次にユニットテストを記述しましたが、あなたはどうですか?

4
一部のユーザーの機能を非表示/無効にする
アプリの無料版と有料版があるとしましょう。有料版は、ユーザーが利用できる機能に関する無料版のスーパーセットです。つまり、有料版は無料アプリのすべての機能に加えて追加機能を備えています。 起動時にロードされるフラグ(無料/有料など)に基づいて機能の可用性を切り替えるパターンはありますか? どこにでも以下のコードブロックを用意するのは好きではありません。 if(isFreeVersion){ // ... } else { // ... } すべてのバージョンのために2つの別々のgitのブランチを持つことは、それは2を維持(またはそれ以上)のコードのソースを意味しますので、オプションではありません、一般的には非現実的と思われる、よりここで議論されています。バージョン管理で同じコードベースから二つの個別のソフトウェアバージョンを維持します。 これを行う方法はありますか?それでも、単一のコードベースがあり、無料/有料フラグをチェックする条件ステートメントでコードを散らかしていませんか? これは以前に何度も議論されたと確信しており、この問題に取り組むためのいくつかのパターンがあると確信していますが、それを見つけることができません。 Android / Javaを使用しています。

2
システムのJava部分の外で列挙型を参照するには、文字列またはintを使用する方が良いですか?
私はJavaでの列挙型の使用について私の仕事で議論をしていました。 同僚は、サーバー側で列挙型を使用する場合、必要に応じてそれを参照するために文字列を使用する必要があると主張していました(たとえば、JSからサーバーにデータを送信するとき、またはデータベースに格納するとき)、これははるかに明確であると主張しました開発者にとって、またタイプミスの場合にはすぐに失敗するだろうと主張しました。 これらの場合、列挙型を識別するために常に整数を使用しました。それは不変の識別子であり、大文字と小文字の違いやタイプミスの問題がないためです(開発者が1ではなく2を使用するというミスを犯したとしても、すぐには失敗しません)。 これらの引数について非常に分析的であるので、文字列を使用する方が良いと思いますが、私はそれについて不思議な気持ちになります(まるで良いアプローチではなかったかのように)。 この議論に関して私を導くことができるベストプラクティスはありますか? 編集:可能な場合は常に列挙型自体を使用するため、すべてのJavaコードは列挙型を使用します。「enumへの参照」とは、JavaScriptからサーバーにデータを交換するとき、またはデータベースにデータを格納するときに、enumの値を参照することを意味します

4
Javaのインスタンスの置き換え?
したがって、私は現実の世界(学術プロジェクト以外)でのプログラミングにかなり慣れていinstanceofないため、特定のオブジェクトがどのクラスであるかを判断するために使用することは悪いことだと多くの投稿に出くわしました。 私の状況では、3つのクラスがあります。1つは基本製品クラスで、もう1つはそれを拡張し、もう1つはそれを拡張します。これらはすべてデータベースの同じテーブルに格納されており、データを取得するためにそれぞれのメソッドを使用する必要があるコードがいくつかあります。 この方法で回避するためのベストプラクティスは何ですか?ポリモーフィズムについていくつか読んだことがありますが、私が抱えている問題を解決する例は見つかりません。通常、これらはすべて、異なるオブジェクトから異なるものをプルする必要があるため機能しないメソッドをオーバーライドします。 これを行うためのより良い方法はありinstanceofますか、それともオブジェクトに固有のフィールドを取得するための使用または何らかの反射で立ち往生していますか?

9
修正不可能な無限のプロジェクトへの対処
私たちは、技術的な負債を多く抱えた大規模な(1200時間以上)ウェブサイトを持っています。これは主に次の(通常の)理由が原因です。 開発中に出入りする複数のプログラマー。 開発中の仕様変更。 多数の追加機能が(短時間で)追加されました。 顧客は多くの新しい機能を望んでおり、それは基本的にこのプロジェクトに毎週 10時間以上取り組むことになります。 技術的な負債があるため、問題の修正または調査に多くの時間を費やしていますが、通常、問題の原因は次のいずれかにあります。 人々を泣かせる、恥知らずで愚かなバグ。 新しい機能が影響するすべての場所を予測していなかったため、新しい機能は上記の結果をもたらしました。 私たちが直面しているいくつかの他の問題(サーバーの移行、アップグレード) 私たちは毎日問題を抱えており、これを停止するために以下のことを試みました: ウェブサイトのインポート、支払い、および一般的な作業に関する技術文書を作成しました。 週の初めに会議を開き、現在の問題または改善点とそれらにどのように取り組むべきかについて話し合います。 テスト計画を立てます。プログラマーAテストB、BテストC、CテストA.次に、プロジェクトマネージャーがいくつかのテストを行います。この機能の影響については、ステージング環境に投入し、お客様に確認してもらいます。 問題は、問題が発生し続けることです...そしてどういうわけかそれを把握することができません。新機能は依然としてバグを引き起こし、古いバグは挨拶を続けます。どういうわけか-おそらくプロジェクトの規模のため-このプロジェクトを把握できていないようです。 私はこれよりも大きなプロジェクトに取り組んでいるプログラマーがたくさんいると思います。それが私が私の質問に来る理由です: 私たちは何ができるのか、何をすべきか、あなたは大規模なプロジェクトでこれらの問題を回避するのですか? 細かい編集、追加情報: バージョン管理(SVN)を使用しています。 DTAP開発プロセスがあります。

5
ベストプラクティス-関数呼び出しの周りをラップするvs関数内でガードする場合は早期終了を追加する
これは非常にユースケース固有のものになる可能性があることは知っていますが、私はあまりにも頻繁にこれに疑問を感じています。一般的に推奨される構文はありますか? 私は関数の中で最善の方法を尋ねているのではなく、早く終了するか、関数を呼び出さないかを尋ねています。 関数呼び出しの周りをラップする if (shouldThisRun) { runFunction(); } 持っている場合(ガード)機能で runFunction() { if (!shouldThisRun) return; } 後者のオプションは、この関数が複数回呼び出された場合にコードの重複を減らす可能性があることは明らかですが、関数の単一の責任性を失う可能性があるため、ここに追加すると間違っていると感じる場合があります。 例はこちら 何かのステータスを更新するupdateStatus()関数がある場合。ステータスが変更された場合にのみステータスを更新します。ステータスが変更される可能性があるコード内の場所を知っています。 私だけかどうかはわかりませんが、この関数をできるだけ純粋にしたいので、この内部関数をチェックするのは少し汚れています。これを呼び出すと、ステータスが更新されることが期待されます。しかし、変更を加えていない可能性があることがわかっているいくつかの場所で、呼び出しをチェックでラップする方がよいかどうかはわかりません。

6
オブジェクトが可変である場合、関数型プログラミングのコンテキストで何が問題になる可能性がありますか?
不変オブジェクトのような可変オブジェクトと不変オブジェクトの利点は、共有および書き込み可能な状態が原因で、マルチスレッドプログラミングの問題のトラブルシューティングが非常に困難になることを理解できます。逆に、変更可能なオブジェクトは、毎回新しいコピーを作成するのではなく、オブジェクトのIDを処理するのに役立ちます。そのため、特に大きなオブジェクトのパフォーマンスとメモリ使用量も向上します。 私が理解しようとしていることの1つは、関数型プログラミングのコンテキストで可変オブジェクトを使用すると何が問題になるのかということです。私に言われたポイントの1つのように、異なる順序で関数を呼び出した結果は確定的ではありません。 関数プログラミングで可変オブジェクトを使用すると何がうまくいかないかが非常に明白な実際の具体例を探しています。基本的にそれが悪いのであれば、オブジェクト指向や関数型プログラミングのパラダイムに関係なく悪いのですよね? 私自身の声明自体がこの質問に答えると思います。それでももっと自然に感じられるように、いくつかの例が必要です。 OOは、カプセル化、ポリモーフィズムなどのツールを使用して、依存関係を管理し、より簡単で保守可能なプログラムを作成するのに役立ちます。 関数型プログラミングも、保守可能なコードを促進する同じ動機がありますが、OOツールとテクニックを使用する必要性を排除するスタイルを使用しています。

5
私が知っていることの道をたどって、正しいコーディングプラクティスを実装しようとするのか、それとも良いコーディングプラクティスから始めて、自分の道をたどろうとするのか?
まず、私は趣味として手続き型プログラミングに慣れていると言いたいのですが、OOPをいくつかの言語で学び、理論を理解しようとしています。練習ではありません。 特にデータベースバックエンドを備えたPHPで構築したいペットプロジェクトがあります(何でもかまいませんでした)。私の主な理由は、アプリが任意のデバイスで使用されることでした。そのため、WebAppは論理的な選択のように思われました。 メンテナンス可能なPHP WebAppを構築するには、OOP、クラス、フレームワーク、ライブラリなどを使用する必要があることを理解しています。これは論理的に聞こえるので、人気のあるものをいくつか試すことにしました。しかし、それらを試してチュートリアルを終わらせようとする週末全体を過ごした後、チュートリアルを私の小さなプロジェクトに適合させようとすることに戸惑い、挫折しました。 私は、主に概念実証のために、別のプログラム(Microsoft Access)でアプリを構築することを決定し、Webパーツを除いて、主な目標をわずか数時間で達成しました。 私の質問は、私は、私が知っているの道をたどる必要がありますされ、その後、正しいコーディングプラクティスを実装しようか、私がすべき始める良いコーディング慣行で、そしてを通じて自分の道をごまかすしようか?このプロジェクトでは、GitHubでオープンソース化したいので、自分のコードを使用および変更している他の人に開放的にしますが、コードの記述が不十分だと、プログラマーを集めて支援するのが難しいことも知っています。

2
C#で「グローバル」変数をカプセル化する方法 /ベストプラクティス
この投稿を改善してみませんか?この質問に対する詳細な回答を提供します。これには、引用と、回答が正しい理由の説明が含まれます。詳細が不十分な回答は編集または削除される場合があります。 C#で、複数のメソッドで使用する必要がある変数をカプセル化するためのベストプラクティスは何ですか?2つのメソッドの上の私のクラスの先頭で単にそれらを宣言することは問題ありませんか? また、設定ファイルのアプリ設定を使用している場合、ゲッターを使用する必要がありますか?このような... private string mySetting{ get { return WebConfigurationManager.AppSettings["mySetting"]; } } ベストプラクティスは何ですか?

9
条件文で(位置<サイズ)がこのような一般的なパターンになるのはなぜですか?
条件ステートメント(IF)では誰もがを使用(position &lt; size)していますが、なぜですか? 慣習だけですか、それとも正当な理由がありますか? 野生で発見: if (pos &lt; array.length) { // do some with array[pos]; } めったに見つかりません: if (array.length &gt; pos) { // do some with array[pos]; }

3
メソッドのパラメーター型、戻り値の型、およびプロパティ型の具体性に関する規則
少し前に、メソッドパラメータの型、戻り値の型、およびプロパティの型の具体性についての「経験則」を読みましたが、覚えていません。 それはあなたの戻り値の型をできるだけ具体的にそしてあなたのパラメータ型をできるだけ抽象的に保つことについて何かを言った...またはその逆 実際に良いアドバイスなのか悪いアドバイスなのかはわかりませんので、ご自身の考えがあればコメントしてください。 乾杯。

8
「コードの最適化」==「データの構造化」はいつですか?
ycombinatorによる最近の記事に、優れたプログラマーの原則を伴うコメントがリストされています。 #7.良いプログラマー:コードを最適化します。優れたプログラマー:データを構造化します。最高のプログラマー:違いは何ですか? 主観的で論争のある概念を認める-これが何を意味するかについて誰かが立場を持っていますか?私はそうしますが、私は後でこの質問を自分の考えで編集して、回答の素因を作らないようにしたいと思います。

7
メモリ管理に関するエントリーレベルのエンジニアの質問
入門レベルのソフトウェア開発者としてのポジションを始めてから数ヶ月になります。いくつかの学習曲線(言語、専門用語、VBやC#の構文など)を過ぎた今、より優れたソフトウェアを書くために、より難解なトピックに焦点を合わせ始めています。 同僚に簡単な質問をしたところ、「間違ったことに集中している」と答えました。私はこの同僚を尊重していますが、これが「間違ったこと」に焦点を当てていることには同意しません。 ここにコード(VB)があり、その後に質問が続きました。 注:関数GenerateAlert()は整数を返します。 Dim alertID as Integer = GenerateAlert() _errorDictionary.Add(argErrorID, NewErrorInfo(Now(), alertID)) 対... _errorDictionary.Add(argErrorID, New ErrorInfo(Now(), GenerateAlert())) 私は後者を最初に作成し、「Dim alertID」を使用して書き直したので、他の誰かが読みやすくなっています。しかし、ここに私の懸念と質問がありました: Dim AlertIDでこれを書き込むと、実際にはより多くのメモリを消費します。有限ではありますが、このメソッドを何度も呼び出す必要がありますか?.NETはこのオブジェクトAlertIDをどのように処理しますか。.NETの外では、使用後にオブジェクトを手動で破棄する必要があります(サブの末尾近く)。 ガベージコレクションだけに頼らない知識豊富なプログラマーになりたいです。私はこれを考えすぎていますか?私は間違ったことに集中していますか?

2
ARCのプロパティ:常時またはパブリックのみ?
Robert McNallyによる「The Code Commandments:Best Practices for Objective-C Coding」という謙虚に名付けられた記事を2年ほど前に読んだ後、Objective-Cクラスのほとんどすべてのデータメンバーにプロパティを使用するという慣習を採用しました( 2012年5月の第3の戒め)。マクナリーはそうするためのこれらの理由をリストします(私の強調): プロパティはアクセス制限を強制します(読み取り専用など) プロパティはメモリ管理ポリシーを適用します(強い、弱い) プロパティは、カスタムセッターとゲッターを透過的に実装する機会を提供します。 カスタムセッターまたはゲッターを持つプロパティを使用して、スレッドセーフティ戦略を実施できます。 インスタンス変数にアクセスする単一の方法があると、コードが読みやすくなります。 私はほとんどの物件をプライベートカテゴリに分類しているので、1と4は通常、私が遭遇する問題ではありません。引数3と5はより「やわらかい」ものであり、適切なツールと他の一貫性があれば問題にならない可能性があります。最後に、私にとってこれらの議論の中で最も影響力があったのは、2番目のメモリ管理でした。それ以来、私はこれを続けています。 @property (nonatomic, strong) id object; // Properties became my friends. 最後のいくつかのプロジェクトでは、ARCを使用するように切り替えました。そのため、ほとんどすべてのプロパティを作成することは、それでも良いアイデアなのか、それとも少し不必要なのか疑問に思いました。ARCは、Objective-Cオブジェクトのメモリ管理を担当してくれます。ほとんどのstrongメンバーにとって、ivarを宣言するだけで問題なく機能します。とにかく、ARCの前後に手動で管理する必要があったCタイプであり、weakプロパティはほとんどパブリックプロパティです。 もちろん、クラスの外部からのアクセスが必要なものには、まだプロパティを使用していますが、ほとんどのプロパティはほんの一握りのプロパティであり、ほとんどのデータメンバーは、実装ヘッダーの下にivarとしてリストされています。 @implementation GTWeekViewController { UILongPressGestureRecognizer *_pressRecognizer; GTPagingGestureRecognizer *_pagingRecognizer; UITapGestureRecognizer *_tapRecognizer; } 実験として、私はこれをもう少し厳密に行っており、すべてのプロパティから離れると、いくつかの良い肯定的な副作用があります。 データメンバーコードの要件(@property/ @synthesize)は、ivar宣言だけに縮小されます。 私のself.something参照のほとんどは、ちょうどにクリーンアップされました_something。 プライベート(ivars)とパブリック(プロパティ)のデータメンバーは簡単に区別できます。 最後に、これはAppleがプロパティを意図した目的であるように「感じている」が、それは主観的な推測である。 質問に移ります。私は徐々にダークサイドに向かってスライドしており、implementation-ivarsを優先して、使用するプロパティを減らしています。すべてのプロパティを使用することに固執する必要がある理由について少し説明してください。または、必要な場合にのみivarを増やし、プロパティを減らす理由について、現在の一連の考えを確認してください。どちらか一方の最も説得力のある答えが私のマークを受け取ります。 編集:マクナリーはTwitterで、「プロパティにこだわる主な理由は、すべてを実行する1つの方法、すべてを実行する1つの方法(KVC / KVOを含む)だと思います」と言います。

5
開発中、企業はどのようにしてWebサイトを非表示にしますか?
私はこれに不慣れで、19歳の新しいPHP開発者を雇ったばかりなので、これがどのように機能するのかわかりません。多くの企業は、Webサイトを開発するときに、サイトがインデックスに登録されないようにしています。html5 / cssとphp / mysqlの作業を検索エンジンから非表示にする方法は何ですか?私が間違っていなければ、これらはテクニックです: オフライン開発:ローカルストレージを使用してhtml / cssをレンダリングします。PHP / mysqlがどのように機能するかはわかりません。 .htaccessを使用してアクセスを防止する VPNを使用してアクセスを防止します。

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