16

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

4

5 に答える 5

24

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

お気に入り:

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

SpecialFileClass file = new SpecialFileClass( DBConfig.Start().GetConnection().LookupValue("MaxBufferSizeOfSpecialFile").GetValue());
于 2009-05-05T06:38:47.717 に答える
6

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

心に留めておくべき主なことは、変更によって実際にシステムが改善され、何かをアンチパターンとして軽くラベル付けすることを避け、それを絶対に避けることです。システムを構成し、ハードコーディングを回避することは、システム内の重複した知識に対する簡単な治療法です ( Pragmatic Programmer Quick Reference Guide のポイント 11 : "DRY Don't Repeat Yourself" を参照)。つまり、理想的には、エラー メッセージのような単純なものを変更する必要がある場合に変更する必要があるのは、システム内の 1 つの場所 (コードまたは構成) のみであるべきです。

于 2009-05-05T08:03:06.767 に答える
2

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

http://docs.djangoproject.com/en/dev/topics/settings/

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

num_rows = 20

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

from django.conf import settings
...

for x in xrange(settings.num_rows):
   ...
于 2009-05-05T06:40:40.803 に答える
-1

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

const float pi = 3.1415; // Don't want to hardcode this everywhere in case we ever need to ship to Indiana.
于 2009-05-05T09:34:15.720 に答える