2008-09-01 48 views
5

Tôi dường như hiện đang bị lôi kéo trong cuộc tranh luận với một lập trình viên khác về dự án này, người cho rằng lượt xem không có giá trị. Ông đề xuất một hệ thống PHP trông giống như thế này:Để sử dụng chế độ xem hoặc không sử dụng chế độ xem

$draw = new Draw; 
$nav = $draw->wideHeaderBox(). 
$draw->left(). 
    $draw->image(). 
     Image::get($image,60,array('id'=>'header_image')). 
    $draw->imageEnd(). 
$draw->leftEnd(). 
$draw->left(10). 
    '<div id="header_text">'. 
     self::defaultSectionText(). 
    '</div>'. 
$draw->leftEnd(). 

và vân vân (điều này nằm trong bộ điều khiển btw). Bây giờ lập luận của ông cho điều này thực sự làm cho một số ý nghĩa, ông tuyên bố rằng nếu có một thiết kế lại tất cả chúng ta cần làm là thay đổi HTML ở một nơi và nó thay đổi ở khắp mọi nơi tự động. Tuy nhiên, vì lý do nào đó, phương pháp này vẫn xoa tôi sai đường, liệu có bất kỳ công đức nào để xem xét phương pháp này không? Tôi có nghĩa là bên cạnh việc không phải nhập lại HTML bằng tay.

Trả lời

5

Trình tiết kiệm thời gian HTML hữu ích nhưng chúng chỉ hữu ích khi chúng trực quan và dễ hiểu. Phải khởi tạo một new Draw chỉ không có âm thanh rất tự nhiên. Hơn nữa, wideHeaderBoxleft sẽ chỉ có ý nghĩa đối với người biết mật thiết hệ thống. Và điều gì xảy ra nếu có thiết kế lại, giống như đồng nghiệp của bạn suy ngẫm? Điều gì xảy ra nếu wideHeaderBox trở nên rất hẹp? Bạn sẽ thay đổi đánh dấu (và kiểu, có thể đoán trước) được tạo bởi phương thức PHP nhưng để lại tên phương thức rất không chính xác để gọi mã?

Nếu các bạn chỉ sử dụng thế hệ HTML, bạn nên sử dụng nó xen kẽ theo quan điểm của tác phẩm, và bạn nên sử dụng nó, nơi nó thực sự cần thiết/hữu ích, chẳng hạn như một cái gì đó như thế này:

HTML::link("Wikipedia", "http://en.wikipedia.org"); 
HTML::bulleted_list(array(
    HTML::list_item("Dogs"), 
    HTML::list_item("Cats"), 
    HTML::list_item("Armadillos") 
)); 

Trong ví dụ trên, tên phương thức thực sự có ý nghĩa đối với những người không quen thuộc với hệ thống của bạn. Họ cũng sẽ có ý nghĩa hơn với các bạn khi bạn quay trở lại một tập tin ít được truy cập và tự hỏi bạn đang làm cái quái gì.

1

Đối số mà anh ấy sử dụng là đối số bạn cần lượt xem. Cả hai kết quả chỉ thay đổi nó ở một nơi. Tuy nhiên, trong phiên bản của mình, bạn đang trộn đánh dấu chế độ xem với mã doanh nghiệp.

Tôi khuyên bạn nên sử dụng nhiều thiết kế có khuôn mẫu hơn. Làm tất cả logic nghiệp vụ của bạn trong PHP, thiết lập tất cả các biến cần thiết cho trang của bạn. Sau đó, chỉ cần đánh dấu trang của bạn tham chiếu các biến đó (và xử lý không có logic nghiệp vụ nào).

Bạn đã xem thông minh chưa? http://smarty.php.net

1

Tôi đã làm điều tương tự như vậy trong quá khứ và thật lãng phí thời gian. Ví dụ, về cơ bản bạn phải viết trình bao bọc cho mọi thứ bạn có thể đã có với HTML và bạn S forget quên một số thứ. Khi bạn cần phải thay đổi một cái gì đó trong bố trí, bạn sẽ nghĩ rằng "Shoot, tôi quên mất điều đó ... bây giờ tôi phải mã một phương pháp khác hoặc thêm một tham số khác".

Cuối cùng, bạn sẽ có một bộ sưu tập rất lớn các chức năng/lớp học tạo HTML mà không ai biết hoặc nhớ cách sử dụng tháng kể từ bây giờ. Các nhà phát triển mới sẽ nguyền rủa bạn vì sử dụng hệ thống này, vì họ sẽ phải học nó trước khi thay đổi bất cứ điều gì. Ngược lại, nhiều người có thể biết HTML hơn các lớp bản vẽ HTML trừu tượng của bạn ... và đôi khi bạn chỉ cần nhúng tay vào HTML thuần túy!

1

Có vẻ khá dài và khó tuân theo để trung thực và một số mã trông giống như là rất nhiều thông tin bố cục.

Chúng tôi luôn cố gắng tách logic khỏi đầu ra càng nhiều càng tốt. Tuy nhiên, thường là trường hợp chế độ xem và dữ liệu được liên kết chặt chẽ với cả phần chính tả cách thức khác (ví dụ: trong một trang web thương mại điện tử đơn giản, bạn có thể quyết định bắt đầu hiển thị các mức cổ phiếu bên cạnh mỗi sản phẩm , rõ ràng sẽ liên quan đến việc thay đổi chế độ xem để thêm html thích hợp cho điều này và logic nghiệp vụ để đi và tìm ra giá trị cho cổ phiếu).

Nếu ý nghĩ duy trì 2 tệp để thực hiện việc này là quá nhiều để xử lý, hãy thử chia nhỏ nội dung thành phần "Thu thập dữ liệu" và phần "Hiển thị chế độ xem", mang lại cho bạn hầu hết các lợi ích mà không tăng số lượng tệp bạn cần quản lý.

1

Tôi luôn thấy dễ dàng hơn khi làm việc trực tiếp với html. Có một lớp trừu tượng ít hơn (html -> trang web thực tế/php chức năng -> html -> trang web thực tế) để đối phó với sau đó bạn chỉ cần làm việc trong HTML.

Tôi thực sự nghĩ rằng điều 'chỉ cần thay đổi nó ở một nơi' sẽ không hoạt động trong trường hợp này. Điều này là bởi vì họ sẽ có rất nhiều lần khi bạn muốn thay đổi đầu ra của một hàm, nhưng chỉ ở một nơi duy nhất. Chắc chắn bạn có thể sử dụng đối số nhưng bạn sẽ sớm kết thúc với một số chức năng có như một chục đối số. Kinh quá.

Ghi nhớ các ngôn ngữ/hệ thống templating thường cho phép bạn bao gồm các mẫu phụ, cho phép bạn có một số khối có thể sử dụng lại html.

Điểm mấu chốt là nếu tôi vừa mới bắt đầu tại công ty của bạn và thấy mã như vậy ở khắp mọi nơi, suy nghĩ đầu tiên của tôi là, 'Chết tiệt! Cần một công việc mới một lần nữa.

Các vấn đề liên quan