Stubbing có nghĩa là gì trong lập trình?


Câu trả lời:


30

Phương thức sơ khai là một phương thức chỉ trả về một kết quả đơn giản nhưng hợp lệ (mặc dù không nhất thiết đúng).

Chúng thường được tạo ra khi xây dựng cơ sở hạ tầng và bạn không muốn dành thời gian cho mọi phương pháp cần thiết ngay bây giờ. Thay vào đó, bạn tạo các sơ khai để mọi thứ biên dịch và tự động hoàn thành IDE của bạn biết về các phương thức bạn dự định sử dụng.

Một nơi khác mà các cuống được sử dụng là để chế nhạo khi thử nghiệm, Bạn cung cấp các phương thức sơ khai thay vì phụ thuộc thông thường thông qua việc tiêm phụ thuộc trả về kết quả cố định và sau đó đảm bảo rằng mã thực hiện đúng với chúng. Điều này tách biệt việc kiểm tra mã mà bạn đang cố kiểm tra và có nghĩa là bạn không cần phải quay vòng cơ sở dữ liệu chỉ để chạy các thử nghiệm đó.


3
Nitpick: cuống được sử dụng khi sơ khai, không phải khi chế nhạo. Khi chế giễu, bạn sử dụng giả. martinfowler.com/articles/mocksArentStub.html
Jörg W Mittag

+1 cho phần trên, nhưng tôi muốn thêm rằng, nếu bạn không mong đợi các phương thức còn sơ khai sẽ được sử dụng, có thể hữu ích khi các cuống ném một ngoại lệ hoặc nếu không sẽ gây ra lỗi. Ví dụ "NotImcellenceedException": msdn.microsoft.com/en-us/l Library / nam commons.apache.org/proper/commons-lang/javadocs/api-release/org/ tựa
Dan Armstrong

6

Có lẽ điều này được trả lời tốt nhất với một ví dụ cụ thể. Hãy xem xét trường hợp bạn đang tạo một ứng dụng máy tính để bàn. Bạn đã quyết định để có một hàm có tên createMenubar, createToolbarcreateMainđể xây dựng ứng dụng của bạn là gọn gàng và ngăn nắp.

Mã chính của bạn sẽ trông giống như thế này (ví dụ này là bằng python):

class ExampleApp():
    def __init__(self):
        self.createMenubar()
        self.createToolbar()
        self.createMain()

Cho đến khi bạn có mọi thứ hoạt động, chức năng chính của bạn sẽ thất bại, vậy làm thế nào bạn có thể kiểm tra ứng dụng của mình trong quá trình phát triển? Ví dụ, nếu bạn bắt đầu làm việc trêncreateMenubar , việc khởi tạo sẽ thất bại sau khi nó tạo thanh thực đơn do bạn chưa triển khai thanh công cụ hoặc khu vực chính của GUI.

Đây là nơi khai thác. Bạn có thể tạo một hàm có tên createToolbarcreateMainđáp ứng yêu cầu của hàm tạo ứng dụng (cụ thể là các hàm này tồn tại) mà không cần phải thực hiện chúng. Các chức năng này là sơ khai:

def createToolbar():
    pass

def createMain():
    pass

Với các cuống đó, bạn có thể bắt đầu thực hiện chương trình chính và thanh thực đơn, mà không phải lo lắng về các chi tiết của thanh công cụ hoặc phần chính của chương trình. Cuối cùng, bạn sẽ chuyển sang thanh công cụ và thay thế sơ khai bằng chức năng thực tế. Và cuối cùng, bạn sẽ loại bỏ sơ khai chocreateMain và đưa ra một triển khai thực sự.

Lưu ý rằng sơ khai không nhất thiết phải làm gì. Các cuống này có thể, ví dụ, có thể tạo một widget container trống mà trình xây dựng ứng dụng có thể bố trí. Vấn đề là, bạn tạo các hàm giả hoặc các đối tượng chỉ đủ để cho mã khác của bạn chạy trong khi bạn đang phát triển nó. Theo thời gian, bạn thay thế từng cái một cho đến khi ứng dụng của bạn hoàn tất.


2

Một "sơ khai" được sử dụng trong lập trình "từ trên xuống". Đó là khi bạn đang xây dựng ứng dụng của mình từ chung đến cụ thể. Khi làm như vậy, bạn sẽ sử dụng "cuống" làm "giữ chỗ" cho các ứng dụng cụ thể mà bạn chưa có thời gian để xây dựng. Họ thường trả lại những thứ như giá trị giả hoặc giá trị ngẫu nhiên cho phần chung hơn của chương trình. Không sao đâu, sơ khai cung cấp đủ giá trị để làm cho phần "cao cấp" hơn của chương trình hoạt động. Cho đến khi đó là thời gian để sơ khai được thay thế hoặc trang bị tính toán hoặc giá trị thực sự của nó.

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.