2011-12-23 26 views
9

Tôi thường thấy mình trong trường hợp tôi lặp lại hai, ba dòng mã trong một phương thức nhiều lần và sau đó nghĩ xem có nên đặt nó theo một phương pháp riêng biệt để tránh trùng lặp mã hay không . Nhưng sau đó khi tôi di chuyển những dòng ra khỏi phương pháp tôi thấy rằng phương pháp chỉ tạo ra là không thể tái sử dụng, đã được sử dụng chỉ một lần hoặc đòi hỏi một tình trạng quá tải có ích cho phương pháp khác.Làm thế nào/Khi viết các phương pháp có thể tái sử dụng trong OOP

Câu hỏi của tôi là loại mẫu chúng ta nên tìm kiếm cho thấy chúng ta nên tạo một phương pháp mới. Tôi đánh giá cao phản ứng của bạn.

Trả lời

1

Theo nguyên tắc chung, hãy luôn nghĩ về những tình huống đó dưới dạng thực thể chức năng. Nếu một đoạn mã có chức năng thực hiện một tác vụ (chuyển đổi chuỗi phức tạp, phân tích cú pháp, v.v.), bạn nên viết phương thức tái sử dụng. Nếu chức năng đó dành riêng cho một loại nhất định, hãy viết extension method.

1

Bạn có thể tạo biến cục bộ bên trong chức năng loại Action<> hoặc Func<> và gán đoạn mã cho nó. Sau đó, bạn có thể sử dụng nó ở khắp mọi nơi bên trong chức năng của bạn mà không gây ô nhiễm lớp học của bạn với quá nhiều chức năng trợ giúp nhỏ.

2

Nếu các dòng mã bạn định chuyển sang phương thức khác thực hiện một tập hợp hành động cụ thể (như đọc tệp, tính toán giá trị, v.v.) thì tốt nhất là cấu trúc lại thành phương thức trợ giúp khác. Một lần nữa, làm điều này chỉ khi phương pháp trợ giúp đang được gọi tại một số nơi trong mã của bạn hoặc nếu phương thức người gọi của bạn quá dài (định nghĩa của too long phụ thuộc vào nhà phát triển).

câu hỏi tương tự

+0

Cảm ơn bạn Devendra. Đây là một số liên kết thông tin rất tốt –

3

Tôi sẽ bắt đầu bằng cách đọc về nguyên tắc DRY (Do not Repeat Yours elf) hy vọng nó sẽ cung cấp cho bạn một câu trả lời tốt cho câu hỏi của bạn, đó là một câu hỏi mà tất cả các nhà phát triển nên tự hỏi mình bằng cách này, câu hỏi tuyệt vời !!

Xem Don't repeat yourself

tôi muốn để nó ở DRY bởi vì nó là một khái niệm đơn giản nhưng mạnh mẽ như vậy sẽ cần một số đọc và luyện tập rất nhiều để có được add tốt. Nhưng hãy để tôi cố gắng trả lời trực tiếp câu hỏi của bạn (IMHO),

Nếu bạn không thể đặt tên cho phương pháp phản ánh chính xác phương pháp của bạn, hãy chia nhỏ thành những phần có ý nghĩa.

Bạn sẽ thấy mình làm mất mã của bạn một cách dễ dàng, các phần có thể tái sử dụng sẽ hiển thị và bạn có thể sẽ không bao giờ thấy mình lặp lại mã.

Tôi sẽ làm điều này ngay cả khi nó có nghĩa là có phương pháp chỉ với vài dòng mã.

Tiếp theo thói quen này sẽ đem lại ý nghĩa cho mã của bạn, làm cho nó có thể đọc được dự đoán, và chắc chắn hơn tái sử dụng

+0

Cảm ơn Bassam, tôi đã mua sách trong liên kết bạn đã cung cấp và sẽ đọc nó. Mặc dù tôi đã đọc rất nhiều lý thuyết nhưng thiếu ứng dụng. –

+0

@AbdulWaheed Tôi đã thêm chi tiết vào câu trả lời của mình, hy vọng câu trả lời này sẽ đưa ra một số câu hỏi của bạn. –

4

Đừng đặt quá nhiều chức năng trong một phương pháp/lớp. Hãy thử theo dõi single responsibility principle. Nó sẽ mất một thời gian làm quen với cách tiếp cận đó. Nhưng một khi bạn đạt đến cấp độ đó, bạn sẽ nhận thấy rằng nó được thực hiện một mình. Trước khi viết mã, hãy thử tự hỏi bản thân mình, những khái niệm mà các khái niệm của bạn bao gồm.

Ví dụ: bạn muốn phát triển một ứng dụng, có thể lập chỉ mục nội dung của các tệp pdf. Nó chỉ là hư cấu, nhưng ngay từ cái nhìn đầu tiên, tôi có thể xác định ít nhất ba thành phần:

  1. PdfParser - điều này cung cấp cho bạn với nội dung của một pdf
  2. Indexer - được nhập từ phân tích cú pháp và đếm từ có ý nghĩa
  3. Kho lưu trữ - nó cho sự kiên trì; điều này có thể được làm chung; do đó, chỉ cần nói repository.Get<IndexData>(filename) hoặc một cái gì đó

Bạn cũng nên thử mã chống lại giao diện. Đặc biệt là khi một số loại giao diện người dùng có liên quan. Ví dụ, bạn đang phát triển một ứng dụng trò chuyện với WinForms. Nếu bạn theo mẫu MVC/MVVM, bạn có thể dễ dàng (tức là dễ dàng hơn mã hóa đối với đối tượng Form) sử dụng logic ban đầu của bạn với phiên bản WPF của ứng dụng khách.

0

Nếu bạn xây dựng một phương pháp để sử dụng lại, nhưng không sử dụng phương pháp này ở nhiều nơi, thì phương pháp sử dụng lại của bạn không thực sự được xác minh. Phương pháp trích xuất khi có ý nghĩa và thiết kế lại các phương pháp đó để sử dụng lại khi bạn thực sự có cơ hội sử dụng lại mã.

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