Bỏ qua dấu chấm phẩy trong thẻ - một ý tưởng tốt?


8

Có thể bỏ dấu chấm phẩy kết thúc trong thẻ.

Thí dụ:

<table>
  <th><td>Name</td><td>Email</td>
  <? foreach ($receivers as $receiver): ?>
  <tr>
    <td><?= $receiver->name ?></td>
    <td><?= $recevier->email ?></td>
  </tr>
  <? endforeach ?>
</table>

Lưu ý <? endforeach ?>không có dấu chấm phẩy sau endforeach. Các tài liệu PHP nói:

Thẻ đóng của một khối mã PHP tự động ngụ ý dấu chấm phẩy; bạn không cần phải có dấu chấm phẩy chấm dứt dòng cuối cùng của khối PHP.

Tại sao tôi lại đưa ra chủ đề này?

Hiện tại tôi và một người bạn của tôi làm việc trong một dự án PHP độc quyền với MVC (model-view-controller). Để xem, tôi đã đánh giá một số công cụ mẫu PHP như Smarty, Mustache và thậm chí đã thiết kế công cụ mẫu tự phát triển tại nhà của riêng tôi. Nhưng khi tôi đọc rằng PHP là một công cụ mẫu, bản thân nó đã xuất hiện « click » trong đầu tôi. Tại sao không chỉ đồng ý trong nhóm sử dụng một tập hợp con giới hạn của PHP làm công cụ mẫu? Và có nhiều đánh giá mã để theo kịp các quy tắc?

Và tập hợp con này có thể trông như thế này:

  • Sử dụng thẻ chỉ ngắn <?, <?=?>
  • Chỉ sử dụng các biểu thức đơn giản mà không có tác dụng phụ, đặc biệt là không gán biến
  • Chỉ sử dụng if, foreachincludecho báo cáo
  • Chỉ sử dụng cú pháp thay thế cho các cấu trúc điều khiển
  • Mỗi câu chỉ có một câu lệnh

Đây là bối cảnh mà chúng ta đang bỏ qua các dấu chấm phẩy chấm dứt, cụ thể là cho <? endforeach ?>, <? endif ?><? include("list-contents.php") ?>.

Tuy nhiên tôi thường đọc rằng bỏ qua dấu chấm phẩy chấm dứt là một thực tế xấu. Tại sao? Nó có phải là một thực hành xấu ở tất cả?

Tôi rất vui khi PHP cho phép bỏ qua dấu chấm phẩy chấm dứt bởi vì điều này giảm thiểu sự lộn xộn thị giác trong các tệp mẫu. Chúng trông giống như các tệp HTML chỉ với các đoạn PHP nhỏ ở đây và đó. Ví dụ trên là những gì tôi đang phấn đấu.

Bạn nghĩ gì về điều này? Nếu bạn chống lại nó: tại sao? Nếu bạn ủng hộ nó: Tại sao nó sẽ là một ý tưởng tốt? Tôi nên nói gì với đối tác của mình nếu anh ta giới thiệu cho tôi một số văn bản chống lại việc bỏ dấu chấm phẩy?

Vui lòng sao lưu ý kiến ​​của bạn với các sự kiện, tài liệu tham khảo hoặc kinh nghiệm của riêng bạn.

Câu trả lời:


1

Tôi nghĩ rằng đó là một ý tưởng tốt để sử dụng PHP, hoặc ít nhất là một tập hợp con, như một ngôn ngữ mẫu. Sẽ dễ dàng hơn cho các nhà phát triển mới được tích hợp với hệ thống của bạn vì không có cú pháp thư viện đặc biệt nào để học và bạn không có chi phí cho thư viện đó phân tích mẫu của bạn chỉ để biến nó thành PHP.

Ngoài ra, bạn đã bỏ lỡ một bối cảnh trong đó bạn sẽ cần phải loại bỏ dấu chấm phẩy chấm dứt trong các câu lệnh echo biến của bạn, ví dụ <?= $receiver->name ?>. Nếu bạn sẽ không sử dụng dấu chấm phẩy trong các mẫu của mình thì bạn thực sự không cần phải sử dụng chúng. Rõ ràng ví dụ mã của bạn không sử dụng chúng nhưng tôi chỉ muốn chỉ ra bối cảnh bị thiếu trong đó không sử dụng chấm dứt dấu chấm phẩy.

Điều thực sự quan trọng là có đội mua vào và đảm bảo tính nhất quán trên các mẫu của bạn. Cá nhân, tôi thấy thật xúc động khi không có dấu chấm phẩy ... Tôi theo bản năng muốn thêm các dấu chấm phẩy đó vào tất cả các câu lệnh PHP của bạn. Bạn có một người trong nhóm của bạn có cùng cấp độ OCD không? Họ sẽ phản ứng thế nào với điều này? Nếu nhóm của bạn không mua và một hoặc hai người kịch liệt chống lại điều đó, hãy khiến họ bảo vệ quyết định của họ, thì có lẽ đây không phải là cách tốt nhất để đi.

Một cạm bẫy tiềm năng khác sẽ được kết hợp các thành viên nhóm mới. Họ rất có thể không nhận ra bạn thậm chí có thể làm điều này, quay lại trong các mẫu của bạn và chèn tất cả các dấu chấm phẩy chấm dứt khi thích hợp. Rõ ràng đây là trường hợp một nhà phát triển không biết nhiều về PHP như họ nên nhưng đó là điều mà bạn muốn cân nhắc trong quyết định của mình. Giáo dục các nhà phát triển mới, cơ sở mà trong các mẫu chúng tôi không sử dụng chấm dứt dấu chấm phẩy nhưng chúng tôi làm mã khác.

tl; dr

Nhận mua từ nhóm của bạn, đảm bảo các mẫu của bạn nhất quán và có kế hoạch hợp lý để giáo dục các nhà phát triển mới về cách mã PHP trong các mẫu khác với mã PHP "thông thường" (cú pháp thay thế, không chấm dứt dấu chấm phẩy, cấu trúc PHP được phép, v.v. ).


2

Tôi là tất cả để bỏ qua chúng trong trường hợp này và tôi làm chính xác điều đó, đặc biệt bởi vì trong bối cảnh này, tôi chỉ sử dụng một câu lệnh một dòng cho mỗi hoặc một khối. Nó làm giảm sự lộn xộn thị giác và trong tất cả những năm tôi làm điều này, chưa bao giờ dẫn đến một vấn đề duy nhất.


0

Chỉ sử dụng thẻ ngắn

Không, xin chúa không! Dựa vào các thẻ mở ngắn là một ý tưởng khủng khiếp. Nó chỉ làm cho mã của bạn ít di động hơn. Thẻ mở ngắn không được bật theo mặc định trên nhiều hệ thống. Và nếu bạn muốn chia sẻ mã cho người bị vô hiệu hóa thì sao? Bên cạnh đó, không có gì có được từ các thẻ mở ngắn IMHO.

Chỉ sử dụng cú pháp thay thế cho các cấu trúc điều khiển

Tôi không thấy những gì bạn sẽ đạt được từ đó. Bên cạnh đó không có một cơ sở mã nhất quán.

Mỗi câu chỉ có một câu lệnh

Điều đó cũng có thể làm cho mọi thứ lộn xộn. Khi bạn có một số "mẫu" lộn xộn với các thẻ mở / đóng ở mọi nơi.

Tại sao không chỉ đồng ý trong nhóm sử dụng một tập hợp con giới hạn của PHP làm công cụ mẫu?

Điều đó phụ thuộc vào những người thuộc đội đó. Ví dụ, chỉ những người sử dụng nó biết PHP? Hoặc bạn cũng có những người trong nhóm cần thay đổi các mẫu không biết PHP. Nếu đó là lần đầu tiên tôi sẽ thư giãn theo các yêu cầu (còn gọi là quy tắc), bởi vì khi mọi người gặp sự cố, họ có thể dễ dàng giải quyết bằng tất cả sức mạnh mà PHP cung cấp và bạn sẽ hạn chế giải quyết chúng, bạn sẽ có người phá vỡ quy tắc hoặc nhận được mã rất lộn xộn. Tuy nhiên, nếu bạn có những người trong nhóm không biết PHP, bạn có thể thoát khỏi điều đó như thế.

Bây giờ để trả lời câu hỏi của bạn:

Tuy nhiên tôi thường đọc rằng bỏ qua dấu chấm phẩy chấm dứt là một thực tế xấu. Tại sao? Nó có phải là một thực hành xấu ở tất cả?

Khi mã hóa (bất kể ngôn ngữ nào và bất kể dự án nào), bạn luôn phải giảm số lượng wtf mỗi phút trong mã của mình. Vì vậy, đó là thực tế tồi tệ bởi vì khi ai đó nhìn vào đó họ có thể nghĩ lúc đầu: hey có gì đó kỳ lạ ở đó! Chỉ là người PHP được sử dụng rằng có dấu chấm phẩy để đóng các câu lệnh. Vì vậy, một lần nữa điều này có thể phụ thuộc vào những người trong nhóm của bạn (nhưng bạn đã hỏi kinh nghiệm cá nhân của Fer). Bên cạnh đó nó cũng rất rất khó chịu để chuyển đổi giữa cú pháp khi mọi người đang làm việc cả trên front-end (các mẫu) như là phụ trợ. Và dễ bị cả lỗi và phiền toái trong đội.

Và cuối cùng về thực tế là PHP cho phép bạn làm một cái gì đó: PHP cho phép bạn làm tất cả mọi thứ. Thực tế này không có nghĩa là bạn nên sử dụng nó. Có một bài đăng meta một lần trên Stack Overflow mà về Stack Overflow không phải là ví dụ hoàn hảo cho các quy tắc riêng của nó (hoặc một cái gì đó tương tự :)) cũng có thể được sử dụng cho PHP. Có tất cả các loại công cụ FUBAR trong PHP (vâng tôi đã nói), nhưng điều đó không có nghĩa là bạn nên nói: nhưng nhưng PHP cho phép nó. Đoán xem PHP cũng cho phép bạn chạy các truy vấn mà không cần vệ sinh đầu vào. PHP cũng cho phép bạn viết tất cả mã trên một dòng duy nhất. PHP cũng cho phép bạn tạo các tên biến như thế nào $S0mEvAriBLe. Tất cả những điều này không có nghĩa đó là điều tốt nhất để làm.

2 xu của tôi


Hãy để tôi nhận xét về quan điểm của bạn: 1) Cú pháp thay thế vì tạo khuôn mẫu HTML là một lĩnh vực khác với «PHP bình thường». Tôi muốn nhấn mạnh điều này với các cấu trúc khác nhau. 2) Chỉ có một câu lệnh trong thẻ vì các khung nhìn chủ yếu là HTML chỉ với một ít mã PHP. 3) Hạn chế sức mạnh của PHP vì tách rời các mối quan tâm. Trong các khung nhìn, không có gì về ứng dụng được quyết định, tính toán hoặc truy vấn. Đó là nhiệm vụ của bộ điều khiển cùng với mô hình. Nó sẽ làm rối tung sự phân tách nếu ai đó sử dụng toàn bộ sức mạnh của PHP trong một khung nhìn. Cảm ơn bạn vì câu trả lời. Nó rất hữu dụng.
nalply
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.