回答:
冗長性を削除するか、より簡潔な構成を使用して、コードの行を減らすことを意味します。
たとえば、元のApple Lisa開発チームからのこの有名な逸話を参照してください。
Lisaチームが1982年にソフトウェアの完成を推し進めていたとき、プロジェクトマネージャーは、プログラマーが書いたコードの行数を報告する毎週のフォームを提出することをプログラマーに要求し始めました。ビル・アトキンソンはそれはばかげていると思った。QuickDrawの領域計算ルーチンを6倍速く、2000行短くなるように書き直した週には、フォームに「-2000」を付けました。さらに数週間後、マネージャーはフォームに記入するよう彼に求めるのをやめ、喜んで応じました。
プログラマーの生産性をコードの行で測定するという行に沿ったビル・ゲイツの引用があります。これは、航空機の建物の進捗を重量で測定するようなものです。
LOCメトリックは、過度に長すぎる言語の使用を奨励し、クォータを満たすために意図的にホイールを再発明したことを付け加えます。
私が高校にいたとき-はい、私たちは石のナイフを使用して動物の皮からそれらを作らなければならなかったけれども、私たちは70年代にコンピュータを持っていました-数学教師の一人がプログラミングコンテストを行いました。ルールは、勝ったプログラムが正しい出力を生成し、実行時間のコード行の積が最小になるプログラムであるというものでした。つまり、プログラムが100行のコードを取得して5秒間実行すると、スコアは500になります。他の誰かが90行のコードを作成して6秒間実行すると、彼のスコアは540になります。
それは、簡潔さとパフォーマンスの両方に報いる、素晴らしいスコアリングシステムとして私を驚かせました。
しかし、技術的に勝利基準を満たしたエントリーは失格となりました。問題は、100未満のすべての素数のリストを印刷することでした。失格のエントリは次のようになりました(当時の学生のほとんどはBASICを使用していました)。
100 print "2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61,"
110 print "67, 71, 73, 79, 83, 87, 89, 91, 97"
そのエントリを書いた学生は、それが短くて非常に効率的であるだけでなく、プログラミングの最小限の知識さえあれば誰でもアルゴリズムが明白であり、プログラムを非常に保守しやすいものにするべきだと指摘しました。
ほっそりしています。平均コード行あたり$ Nの費用がかかる場合、「負の行」のコーディングが確実に勝者となります。
これは、実用的なアドバイスとして、仕事を達成する小さなコードは、同じことをする大きなコードよりもはるかに優れていることを意味します。
Thiloの答えはおそらく歴史的に最も正確ですが、「ネガティブコード」のメタファーには、パフォーマンスとメモリの使用も含まれます。
この「原告が支払う」メンタリティは、「何もしないことは常に何かをするよりも速い」、「最速のコードは決して実行されないコードである」、「十分に長く延期できるなら、あなたはそれをする必要がないかもしれません」(実際に必要になるまで高価な操作を延期することを指す)
ネガティブコードを実現する1つの手法は、問題の初期の仮定と定義に挑戦することです。「スティッキーな問題#3」が明確に不可能になるように問題/入力ドメインを再定義できれば、スティッキーな問題#3を扱う時間やコードを費やす必要はありません。デザインを最適化することでコードを削除しました。