ソフトコーディングとは何ですか? (アンチパターン)

StackOverflow https://stackoverflow.com/questions/823610

  •  05-07-2019
  •  | 
  •  

質問

ソフトコーディングのアンチパターンの簡潔で紛らわしいウィキペディアエントリを見つけました。それでは、ソフトコーディングとは何ですか?どのような設定でそれが悪い習慣ですか(アンチパターン)?また、いつそれが有益であると考えられるか、もしそうなら、どのように実装されるべきですか?

役に立ちましたか?

解決

簡単な答え:ハードコーディングを避けるために極端に進み、最初からハードコーディングされた値があった場合よりも悪い状態を維持するために、モンスターの複雑な抽象化レイヤーで終わること。つまり、オーバーエンジニアリングです。

いいね:

SpecialFileClass file = new SpecialFileClass( 200 ); // hard coded

SpecialFileClass file = new SpecialFileClass( DBConfig.Start().GetConnection().LookupValue("MaxBufferSizeOfSpecialFile").GetValue());

他のヒント

ソフトコーディングに関するWTFの毎日の記事の要点は、時期尚早な最適化と非常に明確に定義され、重複した知識のないシステムが変更され、必要なく複雑になるシステムを恐れます。

留意すべき主なことは、変更によって実際にシステムが改善され、何かをアンチパターンとして軽視することを避け、それを避けることです。システムの構成とハードコーディングの回避は、システム内の重複した知識の簡単な解決策です(ポイント11を参照: Pragmatic Programmerクイックリファレンスガイド)これは、ハードコーディングを回避するという提案の背後にある推進的なニーズです。つまりエラーメッセージのような単純なものを変更する必要がある場合は、システム内の1つの場所(コードまたは構成)のみを変更するのが理想的です。

Ola、ソフトコーディングの概念が組み込まれた実際のプロジェクトの良い例は、 Django プロジェクト。それらのsettings.pyファイルは特定のデータ設定を抽象化するため、コード内に埋め込むのではなく、そこに変更を加えることができます。必要に応じてそのファイルに値を追加し、必要に応じて使用することもできます。

http://docs.djangoproject.com/en/dev/topics/設定/

これは、settings.pyファイルのスニペットである可能性があります。

num_rows = 20

次に、いずれかのファイル内でその値にアクセスできます:

from django.conf import settings
...

for x in xrange(settings.num_rows):
   ...

究極のソフトコーディング:

const float pi = 3.1415; // Don't want to hardcode this everywhere in case we ever need to ship to Indiana.
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top