2012-02-06 15 views
15

Như bạn đang phát triển bạn thường sử dụng những thứ nhưcách thanh lịch để ngăn chặn phát hành biên soạn với lỗi

throw new NotImplementedException("Finish this off later") 

hoặc

// TODO - Finish this off later 

như một giữ chỗ để nhắc nhở bạn để kết thúc một cái gì đó ra - nhưng đây có thể bị bỏ lỡ và nhầm lẫn kết thúc trong bản phát hành.

Bạn có thể sử dụng giống như

#if RELEASE 
    Finish this off later 
#endif 

vì vậy nó sẽ không biên dịch trong phiên bản build - nhưng là có một cách thanh lịch hơn?

+0

Tạo một công việc nợ kỹ thuật (JIRA, TFS, CQ, bất kỳ điều gì)? – sll

+0

BTW, tôi cho rằng kiểm tra như vậy phải là một phần của quá trình xây dựng, có thể kiểm tra thay vào đó? Hầu hết các hệ thống điều khiển phiên bản đều có móc có thể xử lý các trường hợp như vậy. – Snowbear

+1

@Snowbear Vì vậy, bạn không cho phép họ đăng ký cho đến khi mọi thứ được hoàn thành - hoặc bạn chỉ không xây dựng nó với một TODO? – weston

Trả lời

11

tôi thấy một thực hiện thanh lịch here

#if DEBUG 

namespace FakeItEasy 
{ 
    using System; 
    using System.Diagnostics.CodeAnalysis; 

    /// <summary> 
    /// An exception that can be thrown before a member has been 
    /// implemented, will cause the build to fail when not built in 
    /// debug mode. 
    /// </summary> 
    [Serializable] 
    [SuppressMessage("Microsoft.Design", 
     "CA1032:ImplementStandardExceptionConstructors", 
     Justification = "Never used in production.")] 
    public class MustBeImplementedException 
     : Exception 
    { 
    } 
} 

#endif 
+0

Làm thế nào để nó hoạt động? – crazy2be

+2

@ crazy2be - bạn làm cho các phương thức chưa hoàn thành của bạn ném 'MustBeImplementedException'. Chỉ thị trình biên dịch' #if DEBUG' đảm bảo rằng lớp 'MustBeImplementedException' chỉ biên dịch gỡ lỗi, do đó, cho việc phát hành xây dựng bất kỳ ném lãng quên sẽ dẫn đến việc phá vỡ xây dựng vì lớp không có sẵn. – PHeiberg

10

tôi sẽ khuyên bạn nên sử dụng #warning:

#warning Finish this off later 

Và trong cấu hình Release thiết Treat Warnings as Errors-True.

Trong trường hợp này trong Gỡ lỗi, bạn sẽ thấy nó chỉ là cảnh báo nhưng trong bản phát hành nó sẽ ném ngoại lệ.

+0

Vấn đề là có một số cảnh báo mà chúng tôi muốn bỏ qua (ví dụ: gọi các phương thức API bây giờ được đánh dấu [lỗi thời] trong phiên bản mới nhưng chúng tôi muốn nguồn đơn cho phiên bản cũ/mới – Ryan

+1

Bạn có thể định cấu hình loại cảnh báo nào sẽ bị bỏ qua. là chủ đề liên quan: http://stackoverflow.com/questions/267168/treat-all-warnings-as-errors-except-in-visual-studio – Samich

1

Bạn có thể đóng gói này theo phương pháp riêng của nó, theo cách đó, nó chỉ phải được thay đổi ở một nơi cho một rele ase xây dựng.

void NotImplemented() 
{ 
    #if RELEASE 
     Finish this off later 
    #endif 
} 
Các vấn đề liên quan