Nó có mùi vì có thể có nhiều trường hợp nó có thể được chỉnh sửa hoặc cải thiện.
Hầu hết những mùi này chỉ là gợi ý về điều gì đó có thể không ổn. Do đó, bản thân chúng không bắt buộc phải sửa… (Tuy nhiên, bạn nên xem xét nó.)
Bạn có thể tìm thấy tất cả các mùi mã trước đó (Phần i - XXXIII) tại đây .
Tiếp tục đi...
Lỗi nghiêm trọng: Lỗi chưa phát hiện: Không tìm thấy lớp 'logs_queries_web' trong /var/www/html/query-line.php:78
Dấu vết ngăn xếp: #0 {main} được ném vào /var/www/html/query-line.php trên dòng 718
TL;DR: Bắt lỗi của bạn. Ngay cả những người bạn không mong đợi.
Sử dụng trình xử lý cấp cao nhất.
Tránh các ngôn ngữ có lợi cho mã trả về .
Mong đợi cơ sở dữ liệu và lỗi cấp thấp.
Ngay cả trong năm 2022, chúng ta vẫn có thể thấy các trang web "nghiêm túc" hiển thị cho người dùng thông thường một ngăn xếp hoặc thông báo gỡ lỗi.
<? 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");
Chúng ta có thể sử dụng thử nghiệm đột biến để mô phỏng các vấn đề và xem liệu chúng có được xử lý chính xác hay không.
Chúng ta cần tiếp tục trưởng thành.
Các giải pháp của chúng ta không nên cẩu thả.
Chúng ta cần cải thiện danh tiếng của mình với tư cách là những kỹ sư phần mềm nghiêm túc.
Mùi mã chỉ là ý kiến của tôi.
Ảnh của jesse orrico trên Bapt
80 phần trăm các vấn đề của tôi là lỗi logic đơn giản. 80% vấn đề còn lại là lỗi con trỏ. Các bài toán còn lại khó.
Đánh dấu Donner
Báo giá tuyệt vời về kỹ thuật phần mềm
Băm đảm bảo hai đối tượng khác nhau. Không phải là họ giống nhau.
TL; DR: Nếu bạn kiểm tra hàm băm, bạn cũng nên kiểm tra sự bằng nhau
Vào ngày 7 tháng 10 năm 2022, một trong những chuỗi khối lớn hơn đã phải tạm dừng.
Tin tức này gây sốc vì hầu hết các chuỗi khối được định nghĩa là phi tập trung.
Bạn có thể đọc một bài viết đầy đủ ở đây:
Hacker đã đánh cắp 566 triệu USD bằng cách khai thác mùi mã như thế nào
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 }
Nhiều kẻ nói dối có các quy tắc để xác định lại hàm băm và đẳng thức.
Với thử nghiệm đột biến, chúng ta có thể gieo các đối tượng khác nhau bằng cùng một hàm băm và kiểm tra các thử nghiệm của mình.
Mỗi cải tiến hiệu suất có nhược điểm của nó.
Bộ nhớ cache và bản sao là những ví dụ đáng chú ý.
Chúng ta có thể (phải) sử dụng chúng một cách cẩn thận.
Mã Mùi 150 - So Sánh ngang tài ngang sức
Mùi mã chỉ là ý kiến của tôi.
Điều này sẽ khiến một số độc giả của bạn ngạc nhiên, nhưng mối quan tâm chính của tôi không phải là bảo mật máy tính. Tôi chủ yếu quan tâm đến việc viết phần mềm hoạt động như dự định.
Wietse Venema
Báo giá tuyệt vời về kỹ thuật phần mềm
Chúng ta cần thực hiện một số thay đổi. Chúng ta cần phải rõ ràng về lý do tại sao
TL; DR: Hãy tuyên bố về các quyết định thiết kế hoặc triển khai của bạn.
Đôi khi chúng tôi thấy các quy tắc tùy ý không dễ kiểm tra.
Nếu chúng ta không thể viết một bài kiểm tra thất bại, chúng ta cần phải có một chức năng với một tên khai báo và xuất sắc thay vì một bình luận.
// We need to run this process with more memory set_memory("512k) run_process();
increase_memory_to_avoid_false_positives(); run_process();
Đây là một mùi ngữ nghĩa.
Chúng tôi có thể phát hiện các bình luận và cảnh báo chúng tôi.
Mã là văn xuôi. Và các quyết định thiết kế nên được tường thuật.
Mã Mùi 05 - Kẻ Lạm Dụng Bình Luận
Mã Mùi 75 - Comments Inside a Method
Mùi mã chỉ là ý kiến của tôi.
Ảnh của Goh Rhy Yan trên Bapt
Các chương trình, giống như mọi người, già đi. Chúng ta không thể ngăn ngừa lão hóa, nhưng chúng ta có thể hiểu nguyên nhân của nó, hạn chế tác động của nó và đảo ngược một số thiệt hại.
Mario Fusco
Báo giá tuyệt vời về kỹ thuật phần mềm
Đừng làm hai hoặc nhiều thứ cùng một lúc.
TL; DR: Cố gắng trở nên nguyên tử nhất có thể trong các phương pháp của bạn
https://maximilianocontieri.com/refactoring-002-extract-method
Nếu bạn đặt tên một phương thức bằng 'And', có thể bạn đang bỏ lỡ cơ hội trích xuất và ngắt phương pháp.
calculatePrimeFactorsRemoveDuplicatesAndPrintThem() // Three responsibilities
calculatePrimeFactors(); removeDuplicates(); printNumbers(); // Three different methods // We can test them and reuse them
Một số kẻ nói dối có thể cảnh báo chúng ta về các phương pháp bao gồm thuật ngữ 'và'.
Khi thực hiện các phương pháp, điều rất quan trọng là chơi một số câu chuyện về chú vịt cao su và tự nhủ liệu chúng ta có đang làm đúng hay không.
%[ https://maximilianocontieri.com/code-smell-85-and-functions ]
Mùi mã chỉ là ý kiến của tôi.
Ảnh của Scott Sanker trên Bapt
Học nghệ thuật lập trình, giống như hầu hết các môn học khác, đầu tiên bao gồm việc học các quy tắc và sau đó học khi nào nên phá vỡ chúng.
Joshua Bloch
Phát triển là tuyệt vời. tái cấu trúc là tuyệt vời. Đừng làm điều đó cùng một lúc
TL;DR: Đừng thay đổi chức năng và tái cấu trúc cùng một lúc.
Đôi khi chúng tôi phát hiện việc tái cấu trúc là cần thiết để phát triển thêm.
Chúng tôi là những chuyên gia về học tập.
Chúng ta nên tạm dừng giải pháp của mình. Làm việc trên việc tái cấu trúc và tiếp tục với giải pháp của chúng tôi.
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
Đây là một mùi tái cấu trúc.
Chúng ta nên sử dụng mã thông báo vật lý.
Hoặc chúng ta đang ở giai đoạn tái cấu trúc hoặc giai đoạn đang phát triển.
Mùi mã chỉ là ý kiến của tôi.
Ảnh của Dannie Jing trên Bapt
Khi tôi học viết mã, việc tái cấu trúc đưa tôi đến những mức độ hiểu biết cao hơn mà nếu không thì tôi sẽ bỏ lỡ. Những người coi việc tái cấu trúc khả năng hiểu là vô ích khi loay hoay với mã không nhận ra rằng họ không bao giờ nhìn thấy những cơ hội ẩn sau sự nhầm lẫn.
Martin Fowler
5 mùi mã khác sắp ra mắt…