Tôi sẽ đưa ra một số gợi ý. Một số trong số họ mâu thuẫn với nhau. Nhưng có lẽ một số hữu ích.
Xem xét danh sách so với cờ
Bạn có thể lặp đi lặp lại trên toàn thế giới và kiểm tra một lá cờ trên mỗi mục để quyết định có nên làm điều đó không. Hoặc bạn có thể giữ một danh sách chỉ những vật phẩm nên làm cờ.
Xem xét danh sách và liệt kê
Bạn có thể tiếp tục thêm các trường boolean vào lớp vật phẩm của mình, isAThis và isAThat. Hoặc bạn có thể có một danh sách các chuỗi hoặc các phần tử enum, như {Hồi isAThis,, is ishathathat} hoặc {IS_A_THIS, IS_A_THAT}. Bằng cách đó, bạn có thể thêm những cái mới trong bảng liệt kê (hoặc hằng chuỗi) mà không cần thêm các trường. Không có gì thực sự sai khi thêm trường ...
Xem xét các con trỏ hàm
Thay vì một danh sách các cờ hoặc enum, có thể có một danh sách các hành động để thực thi cho mục đó trong các bối cảnh khác nhau. (Thực thể-ish)
Xem xét các đối tượng
Một số người thích cách tiếp cận dựa trên dữ liệu, hoặc theo kịch bản hoặc thực thể thành phần. Nhưng hệ thống phân cấp đối tượng lỗi thời cũng đáng xem xét. Lớp cơ sở cần phải chấp nhận các hành động, như trò chơi bài này cho B B-pha hoặc bất cứ điều gì. Sau đó, mỗi loại thẻ có thể ghi đè và trả lời khi thích hợp. Có lẽ cũng có một đối tượng người chơi và đối tượng trò chơi, vì vậy trò chơi có thể làm những việc như, nếu (người chơi-> is ALLowedToPlay ()) {thực hiện chơi trò}.
Xem xét khả năng gỡ lỗi
Một điều thú vị về một đống trường cờ là bạn có thể kiểm tra và in ra mọi trạng thái của mọi mục theo cùng một cách. Nếu trạng thái được biểu thị bằng các loại khác nhau, hoặc các túi của các thành phần hoặc con trỏ hàm hoặc nằm trong các danh sách khác nhau, có thể không đủ để chỉ nhìn vào các trường của mặt hàng. Đó là tất cả sự đánh đổi.
Cuối cùng, tái cấu trúc: Xem xét các bài kiểm tra đơn vị
Cho dù bạn có khái quát bao nhiêu kiến trúc của mình, bạn sẽ có thể tưởng tượng những thứ mà nó không bao gồm. Sau đó, bạn sẽ phải cấu trúc lại. Có thể một chút, có thể rất nhiều.
Một cách để làm cho điều này an toàn hơn là với một bài kiểm tra đơn vị. Bằng cách đó bạn có thể tự tin rằng mặc dù bạn đã sắp xếp lại những thứ bên dưới (có thể rất nhiều!) Chức năng hiện có vẫn hoạt động. Mỗi bài kiểm tra đơn vị trông, như thế này:
void test1()
{
Game game;
game.addThis();
game.setupThat(); // use primary or backdoor API to get game to known state
game.playCard(something something).
int x = game.getSomeInternalState;
assertEquals(“did it do what we wanted?”, x, 23); // fail if x isn’t 23
}
Như bạn có thể thấy, giữ cho các lệnh gọi API cấp cao nhất đó trong trò chơi (hoặc trình phát, thẻ, & c) ổn định là chìa khóa cho chiến lược thử nghiệm đơn vị.