2008-10-06 28 views
6

Tôi hiện đang xây dựng một ứng dụng web nhỏ bao gồm số lượng JavaScript hợp lý. Khi tôi đang tạo mẫu ý tưởng ban đầu, tôi vừa tấn công một vài chức năng để chứng minh cách ứng dụng cuối cùng sẽ có ý định tiếp tục viết lại JavaScript theo bản chất hướng đối tượng.Có đáng để chuyển đổi mã JavaScript chức năng của tôi thành một thiết kế hướng đối tượng không?

Bây giờ tôi đang đi vào giai đoạn thực hiện, tôi thấy rằng việc tạo JavaScript hướng đối tượng vì mục đích hướng đối tượng có vẻ quá mức cần thiết - dự án không có khả năng yêu cầu bất kỳ sửa đổi lớn nào trong tương lai sẽ đảm bảo và thiết kế hướng đối tượng. Thay vào đó, tôi thấy rằng một tập hợp các hàm súc tích, kết dính đang hoạt động tốt. Vì vậy, với điều đó đã nói và cố gắng tuân theo nguyên tắc KISS, khi một tập hợp các chức năng đang cung cấp một giải pháp phù hợp cho một vấn đề, có bất kỳ lý do nào đáng xem xét để chuyển đổi mã của tôi thành một thiết kế hướng đối tượng hay không. ?

Trả lời

11

Không, mặc dù cá nhân tôi thấy OOP ngon hơn, nó là phương tiện để kết thúc và không phải là kết thúc. Có rất nhiều trường hợp lập trình thủ tục có ý nghĩa hơn OOP, một chuyển đổi vì mục đích chuyển đổi, có thể, như bạn đã nói, quá mức cần thiết.

10

Không, hãy để nó tiến lên phía trước - điều đó hiệu quả hơn trong quan điểm của tôi.

+0

Đó là một chút bừa bộn của một bản chỉnh sửa, phải không? Xin vui lòng tránh điều này, nó chỉ là tiếng ồn tăng lên giả tạo trên trang nhất. – annakata

5

Nếu mã của bạn được cấu trúc tốt, được sắp xếp cẩn thận và nhận xét tốt và thực hiện công việc cần thiết, sau đó làm rối nó vì bất kỳ lý do nào khác để thêm tính năng không được thông báo.

Trong khi có thể nói rằng chương trình là độc đáo OOP vv, nếu nó không cần phải được thay đổi để làm việc thì tôi sẽ dứt khoát để nó như vậy.

Nếu aint đã bị hỏng, đừng fidgit với nó :)

0

Coi nó là mã kế thừa từ bây giờ trở đi. Khi bạn muốn thay đổi một cái gì đó, hãy cấu trúc lại nó để mã trở nên dễ dàng hơn trong tâm trí. Nếu bạn cần một chút OOP, hãy sử dụng nó. Nếu không, đừng.

OOP là một cái búa, xin vui lòng không xử lý một vấn đề như đinh ốc.

0

Nếu nó hoạt động và dễ bảo trì, tôi sẽ không bận tâm chuyển đổi nó cho mục đích chuyển đổi. Phải có những điều thú vị hơn để làm.

2

Nếu mã này đã được triển khai và sẽ không yêu cầu bảo trì hoặc - tốt hơn - nâng cấp, hãy gắn với nó. Nếu bạn sẽ thực hiện nó ngay bây giờ và nó có thể trở nên phức tạp, hãy xem xét cách tiếp cận OO.

Kinh nghiệm cho thấy khá dễ viết và duy trì mã thủ tục trong khi độ phức tạp thấp, nhưng sau một ngưỡng nhất định, nó bắt đầu khó tăng độ phức tạp khi sử dụng lập trình thủ tục, trong khi OOP, mặc dù khó bắt đầu hơn, giữ phức tạp dễ quản lý hơn nhiều.

Dòng dưới cùng: nếu tác vụ đủ đơn giản hoặc đã được triển khai, hãy đơn giản. Nếu nó có thể phát triển phức tạp hơn, hãy xem xét OOP.

0

Chỉ cần lưu ý Các đối tượng khá tốn kém để tạo trong javascript.

Tiếp tục xây dựng các đối tượng ở mức tối thiểu.

1

Tôi có thể nói rằng bạn vẫn nên xem xét mã của mình trước khi đưa ra quyết định. Nhược điểm rõ ràng để "viết lại" mã là có một chi phí thử nghiệm để đảm bảo rằng mã của bạn hoạt động giống như trước đây. Bạn có bất kỳ bài kiểm tra Đơn vị nào không? Nếu không, thì chi phí kiểm tra của bạn thậm chí còn cao hơn. Vì vậy, nói chung, tôi chống lại viết lại mã làm việc trừ khi nó phục vụ một kết thúc khác, đó là cho phép bạn dễ dàng viết chức năng mới mà bây giờ được yêu cầu (tức là tái cấu trúc các chức năng phổ biến, v.v.)

BAO GIỜ, bất kỳ thời gian một người nói "Tôi đã tấn công với nhau", tôi khuyên bạn nên luôn xem xét mã của bạn lần thứ hai. Tại sao nó lại bị tấn công cùng nhau ngay từ đầu? Tôi biết rất nhiều người nói rằng mã hướng đối tượng không phải là một kết thúc trong và của chính nó, nhưng nó là một phương pháp mà sau khi trong khi không phải được suy nghĩ về một trong hai. Bạn chỉ cần tự nhiên bắt đầu làm điều đó.

Có lẽ js của bạn là tương đối đơn giản và do đó việc quét OO thực sự là phụ phí. Khỏe. Nhưng tôi vẫn khuyên bạn nên luôn viết mã xem xét (và đặc biệt là có người khác xem xét) bất kỳ mã nào bạn gọi là "bị tấn công". Có lẽ đó là một phiếu Freudian ... nhưng nó đã trượt.

+0

@Nick, Không có phiếu Freudian - mã được 'tấn công' cùng nhau để tạo mẫu và thể hiện chức năng cuối cùng. Tôi chưa bao giờ phát hành mã bị tấn công vào môi trường sản xuất =). Chuyên nghiệp, tôi viết mã OO cả ngày để mã hóa _O_ trong OO cảm thấy gần như không tự nhiên - đó là lý do tại sao tôi muốn có phản hồi. – Tom

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