においがするのは、編集または改善できる場合が多いためです。
これらの臭いのほとんどは、何かが間違っている可能性があることを示しているだけです。したがって、それ自体を修正する必要はありません…(ただし、調べておく必要があります)。
以前のすべてのコードの匂い (パート i ~ XXXIII) は、ここで見つけることができます。
続けましょう...
致命的なエラー: キャッチされていないエラー: クラス 'logs_queries_web' が /var/www/html/query-line.php:78 に見つかりません
スタック トレース: #0 {main} が /var/www/html/query-line.php の 718 行目にスローされる
TL;DR: エラーをキャッチします。あなたが期待していないものでさえ。
トップレベルのハンドラーを使用します。
リターン コードを優先する言語は避けてください。
データベースと低レベルのエラーが予想されます。
2022 年になっても、カジュアルなユーザーにスタックやデバッグ メッセージを表示する「深刻な」Web サイトを見ることができます。
<? Fatal error: Uncaught Error: Class 'MyClass' not found in /nstest/src/Container.php:9
<? // A user-defined exception handler function function myException($exception) { logError($exception->description()) // We don't show Exception to final users } // Set user-defined exception handler function set_exception_handler("myException");
突然変異テストを使用して問題をシミュレートし、それらが正しく処理されているかどうかを確認できます。
私たちは成熟し続ける必要があります。
私たちのソリューションは、ずさんであってはなりません。
真面目なソフトウェア エンジニアとしての評判を改善する必要があります。
Code Smells は私の意見です。
Unsplashのjesse orricoによる写真
私の問題の 80% は単純な論理エラーです。残りの問題の 80% はポインター エラーです。残りの問題は難しいです。
マーク・ドナー
ハッシュは、2 つのオブジェクトが異なることを保証します。それらが同じであるというわけではありません。
TL;DR: ハッシュをチェックする場合は、等価性もチェックする必要があります
2022 年 10 月 7 日、大規模なブロックチェーンの 1 つを停止する必要がありました。
ほとんどのブロックチェーンは定義上分散化されているため、 このニュースは衝撃的でした。
ここで完全な記事を読むことができます:
ハッカーがコードの匂いを悪用して 5 億 6,600 万ドルを盗んだ方法
public class Person { public String name; // Public attributes are another smell @Override public boolean equals(Person anotherPerson) { return name.equals(anotherPerson.name); } @Override public int hashCode() { return (int)(Math.random()*256); } // This is just an example of non-correlation // When using HashMaps we can make a mistake // and guess the object is not present in the collection }
public class Person { public String name; // Public attributes are another smell @Override public boolean equals(Person anotherPerson) { return name.equals(anotherPerson.name); } @Override public int hashCode() { return name.hashCode(); } // This is just an example of non-correlation }
多くのリンターには、ハッシュと等価性の再定義に関するルールがあります。
ミューテーション テストを使用すると、同じハッシュを使用してさまざまなオブジェクトをシードし、テストを確認できます。
すべてのパフォーマンスの改善には欠点があります。
キャッシュとレプリケーションは注目すべき例です。
私たちはそれらを注意深く使うことができます(しなければなりません)。
Code Smells は私の意見です。
読者の中には驚かれる方もいらっしゃると思いますが、私の主な関心はコンピューターのセキュリティではありません。私は主に、意図したとおりに動作するソフトウェアを作成することに関心があります。
ヴィーツェ・ヴェネマ
いくつかの変更を加える必要があります。その理由を明確にする必要があります
TL;DR: 設計または実装の決定は宣言的に行います。
ときどき、簡単にテストできない恣意的なルールを見つけることがあります。
失敗するテストを書くことができない場合は、コメントの代わりに優れた宣言的な名前を持つ関数が必要です。
// We need to run this process with more memory set_memory("512k) run_process();
increase_memory_to_avoid_false_positives(); run_process();
これはセマンティックな匂いです。
コメントを検出して警告することができます。
コードは散文です。そして、デザインの決定は物語的であるべきです。
Code Smells は私の意見です。
UnsplashのGoh Rhy Yanによる写真
プログラムは、人と同じように古くなります。老化を防ぐことはできませんが、その原因を理解し、その影響を制限し、損傷の一部を元に戻すことはできます.
マリオ・フスコ
一度に 2 つ以上のものを作成しないでください。
TL;DR: メソッドでできるだけアトミックになるようにしてください
https://maximilianocontieri.com/refactoring-002-extract-method
「And」を使用してメソッドに名前を付けた場合、抽出してブレークするメソッドの機会を逃している可能性があります。
calculatePrimeFactorsRemoveDuplicatesAndPrintThem() // Three responsibilities
calculatePrimeFactors(); removeDuplicates(); printNumbers(); // Three different methods // We can test them and reuse them
一部のリンターは、「and」という用語を含むメソッドについて警告することができます。
メソッドを作成するときは、ゴム製のアヒルの話をして、物事が正しく作成されているかどうかを確認することが非常に重要です。
%[ https://maximilianocontieri.com/code-smell-85-and-functions ]
Code Smells は私の意見です。
UnsplashのScott Sankerによる写真
プログラミングの芸術を学ぶことは、他のほとんどの分野と同様に、最初にルールを学び、次にそれらを破るタイミングを学ぶことから成ります。
ジョシュア・ブロック
開発は素晴らしいです。リファクタリングは素晴らしいです。同時に作らない
TL;DR: 機能の変更とリファクタリングを同時に行わないでください。
場合によっては、さらなる開発のためにリファクタリングが必要であることがわかります。
私たちは学習の専門家です。
解決策を保留にする必要があります。リファクタリングに取り組み、ソリューションを続行します。
getFactorial(n) { return n * getFactorial(n); } // Rename and Change factorial(n) { return n * factorial(n-1); } // This is a very small example // Things go works while dealing with huge code
getFactorial(n) { return n * getFactorial(n); } // Change getFactorial(n) { return n * getFactorial(n-1); } // Run the tests factorial(n) { return n * factorial(n-1); } // Rename
これはリファクタリングの匂いです。
物理的なトークンを使用する必要があります。
リファクタリング段階または開発段階のいずれかにいます。
Code Smells は私の意見です。
UnsplashのDanny Jingによる写真
私がコードを勉強しているとき、リファクタリングは、他の方法では見逃していたより高いレベルの理解につながります。理解のリファクタリングを無用なコードのいじくりとして片付けている人は、混乱の背後に隠れているチャンスに気づいていないことに気づいていません。
マーティン・ファウラー
さらに 5 つのコードの匂いが間もなく登場します…