Thứ nhất, tôi là người duy trì PHP_CodeSniffer, vì vậy tôi rõ ràng là thiên vị trong lĩnh vực này. Nhưng tôi cũng đã làm việc trên một số cơ sở mã lớn trong 10 năm của tôi như là một nhà phát triển PHP, vì vậy tôi hy vọng tôi có thể đưa ra một số lý do cụ thể để giải thích tại sao các tiêu chuẩn mã hóa lại là một điều tốt. Tôi có thể viết một loạt blog về chủ đề này, nhưng tôi sẽ chỉ cung cấp cho bạn một câu chuyện nhỏ về cách PHP_CodeSniffer xuất hiện để bạn có thể hiểu được vấn đề mà công cụ đã giải quyết cho tôi.
Tôi đã làm việc trên một số dự án CMS lớn. Đầu tiên có một đống mã đằng sau nó và một nhóm phát triển tương đối nhỏ. Chúng tôi không có tiêu chuẩn. Nhưng chúng tôi không có vấn đề gì. Nhóm nghiên cứu rất nhỏ và ở lại với nhau trong một thời gian dài. Chúng tôi quen với nhau.
Sau đó, chúng tôi đã xây dựng một CMS mới. Chúng tôi bắt đầu mới chỉ với một vài nhà phát triển. Sau đó tôi là thành viên của một nhóm chỉ gồm hai nhà phát triển. Một lần nữa, các tiêu chuẩn mã hóa không gây ra bất kỳ vấn đề nào. Tôi và một nhà phát triển khác đến từ cùng một nền tảng và đã thiết lập một số hướng dẫn mà chúng tôi đã theo dõi. Chúng tôi không cần PHPCS lúc đó.
Nhưng nhóm đó đã phát triển một nhà phát triển tại một thời điểm và cuối cùng đã đạt được 12 nhà phát triển toàn thời gian và một số ít đã đến và đi. Một số đến từ CMS cũ và một số đến từ bên ngoài công ty. Tất cả đều có nền tảng khác nhau và cách tiếp cận khác nhau để phát triển. Rõ ràng là ai đã viết mã gì bởi vì các phong cách rất khác nhau. Bất cứ khi nào bạn làm việc trên một cái gì đó phức tạp, trước tiên bạn phải điều chỉnh theo phong cách của họ bởi vì nó không chỉ là cách bạn đã từng nhìn thấy mã. Nó giống như đọc Shakespeare lần đầu tiên. Bạn cần phải làm quen với nó trước khi bạn có thể đọc với tốc độ tự nhiên của mình.
Đối với nhà phát triển, có thêm thời gian để dừng lại và tìm ra một kiểu mã hóa khác chỉ là thời gian lãng phí thuần túy. Đó là một cơ hội cho một ý tưởng để trượt đi trong khi bạn đang bị sa lầy với khoảng cách, thụt đầu dòng và vị trí khung. Vào cuối ngày, những thứ này không quan trọng. Nhưng hãy để tôi nói cho bạn biết, chúng quan trọng rất nhiều nếu chúng khiến các nhà phát triển phá vỡ dòng chảy của họ. Vì vậy, chúng tôi cần một cách để làm cho họ có được quyền ra khỏi con đường và để cho các nhà phát triển làm những gì họ làm tốt nhất.
Đồng thời, chúng tôi đã đào sâu vào JavaScript nhiều hơn nữa. Một ngôn ngữ mới, nơi phong cách thường được ném ra ngoài cửa sổ. Mã đã được sao chép/dán từ các trang web mẫu và được trộn với nhau. Khi học để phát triển mã phức tạp trong một ngôn ngữ mới, nó có ý nghĩa để tìm cách làm cho JS của chúng ta trông giống như PHP của chúng ta. Chúng ta có thể giảm thiểu nó sau này, nhưng chúng ta cần phải có thể chuyển đổi giữa các ngôn ngữ một cách nhanh chóng, một lần nữa để giữ cho luồng của chúng ta.
Vì vậy, PHP_CodeSniffer được sinh ra để thực hiện điều đó. Nó giúp các nhà phát triển làm việc theo cùng một kiểu mã hóa để tạo ra các định dạng và các vấn đề về mồi lửa khác di chuyển hoàn toàn ra khỏi con đường. Nó cho phép bạn xử lý JS của bạn như PHP của bạn đến một mức độ. Tôi sử dụng nó để phát hiện các mùi cụ thể của sản phẩm như các chuỗi không được dịch hoặc các nhà phát triển không sử dụng mã bao gồm lớp thích hợp của chúng tôi. Tôi cũng sử dụng nó cho các mùi ngôn ngữ cụ thể như đảm bảo rằng các dấu phẩy JS giết chết IE không bị bỏ lại. Bạn có thể sử dụng nó cho bất cứ điều gì bạn muốn. Nó đi kèm với đống sniffs dễ dàng hợp nhất với nhau bằng cách sử dụng XML ruleset file. Bạn có thể tự viết mà.Bạn có thể tích hợp các công cụ của bên thứ ba để làm cho nó trở thành một điểm dừng cho phân tích mã tĩnh. Bạn có thể nghiêm túc về các tiêu chuẩn và mùi mã như bạn muốn.
PHP_CodeSniffer, giống như bất kỳ công cụ tìm kiếm nào, sẽ phù hợp với bạn. Bạn không làm việc cho nó. Nếu nó tạo ra quá nhiều lỗi mà bạn không quan tâm, hãy tùy chỉnh tiêu chuẩn để loại bỏ những lỗi bạn không muốn hoặc biến các lỗi thành cảnh báo. Nhưng nếu câu chuyện của tôi có vẻ như một cái gì đó bạn đang trải qua hoặc có thể đi qua trong tương lai, bạn nên xem xét kỹ PHP_CodeSniffer để xem nó có thể giúp bạn không.
Tôi hy vọng sẽ giúp bạn và những người khác, hiểu tại sao các chuẩn mã hóa thực sự quan trọng đối với một số dự án và nhà phát triển. Nó không phải chi tiết. Đó là về việc loại bỏ kiểu mã hóa khỏi danh sách những thứ khiến các nhà phát triển mất tập trung.
Nó không bao giờ ngừng làm tôi kinh ngạc như thế nào tôi tiếp tục tìm kiếm dường như tốt, câu hỏi thông tin về SO mà có được đóng cửa "như không xây dựng". –