2012-02-01 11 views
13

Có vẻ như các nhà phát triển trước của dự án hiện tại tôi đang làm việc với gió bị đánh bắt đến khi kết thúc thời gian của họ để tạo ra một số mã hoạt động nhưng không thể quản lý để trở thành nỗi đau đối với bất kỳ ai sẽ xử lý nó tiếp theo. Thật không may tôi nói người.Tôi đang tìm kiếm công cụ miễn phí độc lập hoặc bổ trợ, có thể phân tách các biểu thức bậc ba

Xuyên suốt mã tôi đang tìm các biểu thức bậc ba đa điều kiện. Nó đang trở thành một nhức đầu để dịch và viết lại/tái cấu trúc chúng.

Có ai biết công cụ miễn phí, độc lập hoặc bổ trợ cho VS 2008, có thể phân tách các biểu thức bậc ba không? Không có ngân sách cho CodeRush trên dự án này. Tôi sẽ tiếp tục tái mã hóa nếu cần thiết, nhưng tôi đang cố gắng có một chút hy vọng ở đây.

Đây là một ví dụ về vấn đề này (xin lỗi để bạn xem xét vấn đề này).

sNoteType = objSelection.Items[1].Selected ? 
    objSelection.Items[0].Selected ? 
    objSelection.Items[3].Selected ? 
    objSelection.Items[4].Selected ? 
    objSelection.Items[5].Selected ? 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + "EV " : 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + "LT " : 
    objSelection.Items[5].Selected ? 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + "EV " : 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + "BA " : 
    objSelection.Items[4].Selected ? 
    objSelection.Items[5].Selected ? 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + "EV " : 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + "LT " : 
    objSelection.Items[5].Selected ? 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + "EV " : 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + "LS " : 
    objSelection.Items[3].Selected ? 
    objSelection.Items[4].Selected ? 
    objSelection.Items[5].Selected ? 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + "EV " : 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + "LT " : 
    objSelection.Items[5].Selected ? 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + "EV " : 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + "BA " : 
    objSelection.Items[4].Selected ? 
    objSelection.Items[5].Selected ? 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + "EV " : 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + "LT " : 
    objSelection.Items[5].Selected ? 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + "EV " : 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + "FD " : 
    objSelection.Items[0].Selected ? 
    objSelection.Items[3].Selected ? 
    objSelection.Items[4].Selected ? 
    objSelection.Items[5].Selected ? 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + "EV " : 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + "LT " : 
    objSelection.Items[5].Selected ? 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + "EV " : 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + "BA " : 
    objSelection.Items[4].Selected ? 
    objSelection.Items[5].Selected ? 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + "EV " : 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + "LT " : 
    objSelection.Items[5].Selected ? 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + "EV " : 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + "LS " : 
    objSelection.Items[3].Selected ? 
    objSelection.Items[4].Selected ? 
    objSelection.Items[5].Selected ? 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + "EV " : 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + "LT " : 
    objSelection.Items[5].Selected ? 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + "EV " : 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + "BA " : 
    objSelection.Items[4].Selected ? 
    objSelection.Items[5].Selected ? 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + "EV " : 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + "LT " : 
    objSelection.Items[5].Selected ? 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + "EV " : 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty; 
+8

Ouch. Đó là tất cả những gì tôi có. Lấy làm tiếc. –

+11

Bạn có thể muốn đăng bài này trên The Daily WTF. –

+0

Cả CodeRush và ReSharper đều có bản dùng thử miễn phí các sản phẩm cần đủ dài để bạn có thể xóa mã này. Bạn cũng có thể biện minh cho việc mua một giấy phép quản lý của bạn dựa trên năng suất của bạn trong việc làm sạch cơ sở mã. – tawman

Trả lời

5

CodeRush Xpress (miễn phí) thực hiện việc này và hơn thế nữa. Xem here.

+0

Trong sự thất vọng của tôi, tôi thậm chí không thấy phiên bản Xpress trên trang web của họ. Cảm ơn bạn đã chỉ cho tôi ở đây. –

8

ReSharper có thể chuyển đổi số ba thành nếu/else.

Tôi thực sự chạy nó thông qua ReSharper và đầu ra cũng đáng sợ như nhau. Chúc các bạn may mắn nhất trong việc tái cấu trúc.

if (objSelection.Items[1].Selected) 
      if (objSelection.Items[0].Selected) 
       if (objSelection.Items[3].Selected) 
        if (objSelection.Items[4].Selected) 
         if (objSelection.Items[5].Selected) 
          if (objSelection.Items[2].Selected) sNoteType = string.Empty + "OV "; 
          else sNoteType = string.Empty + "EV "; 
         else 
         { 
          if (objSelection.Items[2].Selected) sNoteType = string.Empty + "OV "; 
          else sNoteType = string.Empty + "LT "; 
         } 
        else 
        { 
         if (objSelection.Items[5].Selected) 
          if (objSelection.Items[2].Selected) sNoteType = string.Empty + "OV "; 
          else sNoteType = string.Empty + "EV "; 
         else 
         { 
          if (objSelection.Items[2].Selected) sNoteType = string.Empty + "OV "; 
          else sNoteType = string.Empty + "BA "; 
         } 
        } 
       else 
       { 
        if (objSelection.Items[4].Selected) 
         if (objSelection.Items[5].Selected) 
          if (objSelection.Items[2].Selected) sNoteType = string.Empty + "OV "; 
          else sNoteType = string.Empty + "EV "; 
         else 
         { 
          if (objSelection.Items[2].Selected) sNoteType = string.Empty + "OV "; 
          else sNoteType = string.Empty + "LT "; 
         } 
        else 
        { 
         if (objSelection.Items[5].Selected) 
          if (objSelection.Items[2].Selected) sNoteType = string.Empty + "OV "; 
          else sNoteType = string.Empty + "EV "; 
         else 
         { 
          if (objSelection.Items[2].Selected) sNoteType = string.Empty + "OV "; 
          else sNoteType = string.Empty + "LS "; 
         } 
        } 
       } 
      else 
      { 
       if (objSelection.Items[3].Selected) 
        if (objSelection.Items[4].Selected) 
         if (objSelection.Items[5].Selected) 
          if (objSelection.Items[2].Selected) sNoteType = string.Empty + "OV "; 
          else sNoteType = string.Empty + "EV "; 
         else 
         { 
          if (objSelection.Items[2].Selected) sNoteType = string.Empty + "OV "; 
          else sNoteType = string.Empty + "LT "; 
         } 
        else 
        { 
         if (objSelection.Items[5].Selected) 
          if (objSelection.Items[2].Selected) sNoteType = string.Empty + "OV "; 
          else sNoteType = string.Empty + "EV "; 
         else 
         { 
          if (objSelection.Items[2].Selected) sNoteType = string.Empty + "OV "; 
          else sNoteType = string.Empty + "BA "; 
         } 
        } 
       else 
       { 
        if (objSelection.Items[4].Selected) 
         if (objSelection.Items[5].Selected) 
          if (objSelection.Items[2].Selected) sNoteType = string.Empty + "OV "; 
          else sNoteType = string.Empty + "EV "; 
         else 
         { 
          if (objSelection.Items[2].Selected) sNoteType = string.Empty + "OV "; 
          else sNoteType = string.Empty + "LT "; 
         } 
        else 
        { 
         if (objSelection.Items[5].Selected) 
          if (objSelection.Items[2].Selected) sNoteType = string.Empty + "OV "; 
          else sNoteType = string.Empty + "EV "; 
         else 
         { 
          if (objSelection.Items[2].Selected) sNoteType = string.Empty + "OV "; 
          else sNoteType = string.Empty + "FD "; 
         } 
        } 
       } 
      } 
     else 
     { 
      if (objSelection.Items[0].Selected) 
       if (objSelection.Items[3].Selected) 
        if (objSelection.Items[4].Selected) 
         if (objSelection.Items[5].Selected) 
          if (objSelection.Items[2].Selected) sNoteType = string.Empty + "OV "; 
          else sNoteType = string.Empty + "EV "; 
         else 
         { 
          if (objSelection.Items[2].Selected) sNoteType = string.Empty + "OV "; 
          else sNoteType = string.Empty + "LT "; 
         } 
        else 
        { 
         if (objSelection.Items[5].Selected) 
          if (objSelection.Items[2].Selected) sNoteType = string.Empty + "OV "; 
          else sNoteType = string.Empty + "EV "; 
         else 
         { 
          if (objSelection.Items[2].Selected) sNoteType = string.Empty + "OV "; 
          else sNoteType = string.Empty + "BA "; 
         } 
        } 
       else 
       { 
        if (objSelection.Items[4].Selected) 
         if (objSelection.Items[5].Selected) 
          if (objSelection.Items[2].Selected) sNoteType = string.Empty + "OV "; 
          else sNoteType = string.Empty + "EV "; 
         else 
         { 
          if (objSelection.Items[2].Selected) sNoteType = string.Empty + "OV "; 
          else sNoteType = string.Empty + "LT "; 
         } 
        else 
        { 
         if (objSelection.Items[5].Selected) 
          if (objSelection.Items[2].Selected) sNoteType = string.Empty + "OV "; 
          else sNoteType = string.Empty + "EV "; 
         else 
         { 
          if (objSelection.Items[2].Selected) sNoteType = string.Empty + "OV "; 
          else sNoteType = string.Empty + "LS "; 
         } 
        } 
       } 
      else 
      { 
       if (objSelection.Items[3].Selected) 
        if (objSelection.Items[4].Selected) 
         if (objSelection.Items[5].Selected) 
          if (objSelection.Items[2].Selected) sNoteType = string.Empty + "OV "; 
          else sNoteType = string.Empty + "EV "; 
         else 
         { 
          if (objSelection.Items[2].Selected) sNoteType = string.Empty + "OV "; 
          else sNoteType = string.Empty + "LT "; 
         } 
        else 
        { 
         if (objSelection.Items[5].Selected) 
          if (objSelection.Items[2].Selected) sNoteType = string.Empty + "OV "; 
          else sNoteType = string.Empty + "EV "; 
         else 
         { 
          if (objSelection.Items[2].Selected) sNoteType = string.Empty + "OV "; 
          else sNoteType = string.Empty + "BA "; 
         } 
        } 
       else 
       { 
        if (objSelection.Items[4].Selected) 
         if (objSelection.Items[5].Selected) 
          if (objSelection.Items[2].Selected) sNoteType = string.Empty + "OV "; 
          else sNoteType = string.Empty + "EV "; 
         else 
         { 
          if (objSelection.Items[2].Selected) sNoteType = string.Empty + "OV "; 
          else sNoteType = string.Empty + "LT "; 
         } 
        else 
        { 
         if (objSelection.Items[5].Selected) 
          if (objSelection.Items[2].Selected) sNoteType = string.Empty + "OV "; 
          else sNoteType = string.Empty + "EV "; 
         else 
         { 
          if (objSelection.Items[2].Selected) sNoteType = string.Empty + "OV "; 
          else sNoteType = string.Empty; 
         } 
        } 
       } 
      } 
     } 
+0

Cảm ơn bạn đã nghiên cứu. Thật tốt khi biết cộng đồng này có sự hỗ trợ từ những người dùng như chính bạn. Tôi sẽ đi với các phiên bản CodeRush Xpress vì vậy tôi không nhận được phụ thuộc một công cụ tôi sẽ không thể mua sau này. –

+0

Mã đó khiến tôi khóc. – Reid

1

Nếu tôi phải đối mặt với tình huống như vậy, tôi sẽ sử dụng nó để điều tra Roslyn và xem nó có thể giúp ích như thế nào. Tôi nghĩ rằng việc phát triển một plugin cho VS, tái cấu trúc biểu thức thứ ba mà bạn chọn, sẽ phù hợp với dự án "cuối tuần".

http://blog.filipekberg.se/2011/10/23/exploring-how-to-write-a-code-analyzer-with-roslyn/ http://blogs.msdn.com/b/csharpfaq/archive/2011/11/03/using-the-roslyn-syntax-api.aspx

+0

Tôi thích cách tiếp cận của bạn để biến mớ hỗn độn này thành một cái gì đó thú vị! –

3

tôi chuyển nó cho bạn sử dụng CodeRush Xpress tôi

if (objSelection.Items[1].Selected) 
    if (objSelection.Items[0].Selected) 
     if (objSelection.Items[3].Selected) 
      if (objSelection.Items[4].Selected) 
       if (objSelection.Items[5].Selected) 
        if (objSelection.Items[2].Selected) 
         sNoteType = string.Empty + "OV "; 
        else 
         sNoteType = string.Empty + "EV "; 
       else 
        if (objSelection.Items[2].Selected) 
         sNoteType = string.Empty + "OV "; 
        else 
         sNoteType = string.Empty + "LT "; 
      else 
       if (objSelection.Items[5].Selected) 
        if (objSelection.Items[2].Selected) 
         sNoteType = string.Empty + "OV "; 
        else 
         sNoteType = string.Empty + "EV "; 
       else 
        if (objSelection.Items[2].Selected) 
         sNoteType = string.Empty + "OV "; 
        else 
         sNoteType = string.Empty + "BA "; 
     else 
      if (objSelection.Items[4].Selected) 
       if (objSelection.Items[5].Selected) 
        if (objSelection.Items[2].Selected) 
         sNoteType = string.Empty + "OV "; 
        else 
         sNoteType = string.Empty + "EV "; 
       else 
        if (objSelection.Items[2].Selected) 
         sNoteType = string.Empty + "OV "; 
        else 
         sNoteType = string.Empty + "LT "; 
      else 
       if (objSelection.Items[5].Selected) 
        if (objSelection.Items[2].Selected) 
         sNoteType = string.Empty + "OV "; 
        else 
         sNoteType = string.Empty + "EV "; 
       else 
        if (objSelection.Items[2].Selected) 
         sNoteType = string.Empty + "OV "; 
        else 
         sNoteType = string.Empty + "LS "; 
    else 
     if (objSelection.Items[3].Selected) 
      if (objSelection.Items[4].Selected) 
       if (objSelection.Items[5].Selected) 
        if (objSelection.Items[2].Selected) 
         sNoteType = string.Empty + "OV "; 
        else 
         sNoteType = string.Empty + "EV "; 
       else 
        if (objSelection.Items[2].Selected) 
         sNoteType = string.Empty + "OV "; 
        else 
         sNoteType = string.Empty + "LT "; 
      else 
       if (objSelection.Items[5].Selected) 
        if (objSelection.Items[2].Selected) 
         sNoteType = string.Empty + "OV "; 
        else 
         sNoteType = string.Empty + "EV "; 
       else 
        if (objSelection.Items[2].Selected) 
         sNoteType = string.Empty + "OV "; 
        else 
         sNoteType = string.Empty + "BA "; 
     else 
      if (objSelection.Items[4].Selected) 
       if (objSelection.Items[5].Selected) 
        if (objSelection.Items[2].Selected) 
         sNoteType = string.Empty + "OV "; 
        else 
         sNoteType = string.Empty + "EV "; 
       else 
        if (objSelection.Items[2].Selected) 
         sNoteType = string.Empty + "OV "; 
        else 
         sNoteType = string.Empty + "LT "; 
      else 
       if (objSelection.Items[5].Selected) 
        if (objSelection.Items[2].Selected) 
         sNoteType = string.Empty + "OV "; 
        else 
         sNoteType = string.Empty + "EV "; 
       else 
        if (objSelection.Items[2].Selected) 
         sNoteType = string.Empty + "OV "; 
        else 
         sNoteType = string.Empty + "FD "; 
else 
    if (objSelection.Items[0].Selected) 
     if (objSelection.Items[3].Selected) 
      if (objSelection.Items[4].Selected) 
       if (objSelection.Items[5].Selected) 
        if (objSelection.Items[2].Selected) 
         sNoteType = string.Empty + "OV "; 
        else 
         sNoteType = string.Empty + "EV "; 
       else 
        if (objSelection.Items[2].Selected) 
         sNoteType = string.Empty + "OV "; 
        else 
         sNoteType = string.Empty + "LT "; 
      else 
       if (objSelection.Items[5].Selected) 
        if (objSelection.Items[2].Selected) 
         sNoteType = string.Empty + "OV "; 
        else 
         sNoteType = string.Empty + "EV "; 
       else 
        if (objSelection.Items[2].Selected) 
         sNoteType = string.Empty + "OV "; 
        else 
         sNoteType = string.Empty + "BA "; 
     else 
      if (objSelection.Items[4].Selected) 
       if (objSelection.Items[5].Selected) 
        if (objSelection.Items[2].Selected) 
         sNoteType = string.Empty + "OV "; 
        else 
         sNoteType = string.Empty + "EV "; 
       else 
        if (objSelection.Items[2].Selected) 
         sNoteType = string.Empty + "OV "; 
        else 
         sNoteType = string.Empty + "LT "; 
      else 
       if (objSelection.Items[5].Selected) 
        if (objSelection.Items[2].Selected) 
         sNoteType = string.Empty + "OV "; 
        else 
         sNoteType = string.Empty + "EV "; 
       else 
        if (objSelection.Items[2].Selected) 
         sNoteType = string.Empty + "OV "; 
        else 
         sNoteType = string.Empty + "LS "; 
    else 
     if (objSelection.Items[3].Selected) 
      if (objSelection.Items[4].Selected) 
       if (objSelection.Items[5].Selected) 
        if (objSelection.Items[2].Selected) 
         sNoteType = string.Empty + "OV "; 
        else 
         sNoteType = string.Empty + "EV "; 
       else 
        if (objSelection.Items[2].Selected) 
         sNoteType = string.Empty + "OV "; 
        else 
         sNoteType = string.Empty + "LT "; 
      else 
       if (objSelection.Items[5].Selected) 
        if (objSelection.Items[2].Selected) 
         sNoteType = string.Empty + "OV "; 
        else 
         sNoteType = string.Empty + "EV "; 
       else 
        if (objSelection.Items[2].Selected) 
         sNoteType = string.Empty + "OV "; 
        else 
         sNoteType = string.Empty + "BA "; 
     else 
      if (objSelection.Items[4].Selected) 
       if (objSelection.Items[5].Selected) 
        if (objSelection.Items[2].Selected) 
         sNoteType = string.Empty + "OV "; 
        else 
         sNoteType = string.Empty + "EV "; 
       else 
        if (objSelection.Items[2].Selected) 
         sNoteType = string.Empty + "OV "; 
        else 
         sNoteType = string.Empty + "LT "; 
      else 
       if (objSelection.Items[5].Selected) 
        if (objSelection.Items[2].Selected) 
         sNoteType = string.Empty + "OV "; 
        else 
         sNoteType = string.Empty + "EV "; 
       else 
        if (objSelection.Items[2].Selected) 
         sNoteType = string.Empty + "OV "; 
        else 
         sNoteType = string.Empty; 

Tuy nhiên, điều này vẫn còn vô cùng xấu xí. Tôi sẽ đề nghị bạn sử dụng một bảng Sáu chiều thật

string[,,,,,] table = new string[2,2,2,2,2,2]; 
table[0, 0, 0, 0, 0, 0] = "AA"; 
table[0, 0, 0, 0, 0, 1] = "BB"; 
table[0, 0, 0, 0, 1, 0] = "CC"; 
table[0, 0, 0, 0, 1, 1] = "DD"; 
... 

Nó sau đó có thể được truy vấn như thế này

string sNoteType = table[ 
    objSelection.Items[0].Selected ? 1 : 0, 
    objSelection.Items[1].Selected ? 1 : 0, 
    objSelection.Items[2].Selected ? 1 : 0, 
    objSelection.Items[3].Selected ? 1 : 0, 
    objSelection.Items[4].Selected ? 1 : 0, 
    objSelection.Items[5].Selected ? 1 : 0]; 
10

Ý nghĩa của mã này là thực sự đơn giản hơn nhiều so với vẻ bề ngoài. Tiếp tục với ReSharper tìm thấy tôi như sau:

string sNoteType; 
var items = objSelection.Items; 

var item0Selected = items[0].Selected; 
string item3NotSelectedValue; 
if (items[1].Selected) 
{ 
    item3NotSelectedValue = item0Selected ? "LS " : "FD "; 
} 
else 
{ 
    item3NotSelectedValue = item0Selected ? "LS " : string.Empty; 
} 

if (items[2].Selected) 
{ 
    sNoteType = "OV "; 
} 
else 
{ 
    if (items[5].Selected) 
    { 
     sNoteType = "EV "; 
    } 
    else 
    { 
     if (items[4].Selected) 
     { 
      sNoteType = "LT "; 
     } 
     else 
     { 
      if (items[3].Selected) 
      { 
       sNoteType = "BA "; 
      } 
      else 
      { 
       sNoteType = item3NotSelectedValue; 
      } 
     } 
    } 
} 

Kể từ khi Jon đã làm tất cả các công việc khó khăn, đây là một chỉnh sửa mà Tôi nghĩ sôi nó xuống bản chất. Rõ ràng, bạn muốn thử nghiệm xung quanh mã này càng sớm càng tốt - vì tôi không thể tưởng tượng ra một số sai lầm trong việc giải mã tính quái dị này, và việc tái cấu trúc tự động sẽ chỉ giúp bạn đạt được (không phải rất, từ vẻ ngoài của các mẫu đặt ở đây):

var items = objSelection.Items; 
string sNoteType = string.Empty;  
if (items[0].Selected && items[1].Selected) { 
    sNoteType = "LS "; 
} else if (items[1].Selected) { 
    sNoteType = "FD "; 
} else if (items[2].Selected) { 
    sNoteType = "OV "; 
} else if (items[3].Selected) { 
    sNoteType = "BA ";  
} else if (items[4].Selected) { 
    sNoteType = "LT "; 
} else if (items[5].Selected) { 
    sNoteType = "EV "; 
} 
5

mã này nên cư xử y hệt con quái vật gốc:

string sNoteType; 
if (objSelection.Items[2].Selected) 
{ 
    sNoteType = "OV "; 
} 
else if (objSelection.Items[5].Selected) 
{ 
    sNoteType = "EV "; 
} 
else if (objSelection.Items[4].Selected) 
{ 
    sNoteType = "LT "; 
} 
else if (objSelection.Items[3].Selected) 
{ 
    sNoteType = "BA "; 
} 
else if (objSelection.Items[0].Selected) 
{ 
    sNoteType = "LS "; 
} 
else if (objSelection.Items[1].Selected) 
{ 
    sNoteType = "FD "; 
} 
else 
{ 
    sNoteType = string.Empty; 
} 

để đến lúc này tôi bắt đầu với giả định rằng bất cứ mã hiện đang làm là đúng. Sau đó tôi đã viết một kịch bản để tạo ra 64 trường hợp thử nghiệm - một cho mỗi kết hợp của các giá trị chân lý.Hãy tưởng tượng một loạt điều này:

[TestCase("EV ", "000001")] 
[TestCase("LT ", "000010")] 
[TestCase("EV ", "000011")] 
[TestCase("BA ", "000100")] 
[TestCase("EV ", "000101")] 

Sau đó, tôi dán nhãn các mẫu và thêm if-statement từng cái một cho đến khi monstrosity không còn cần thiết nữa. Tôi không thể đảm bảo rằng đây là cách tác giả gốc đã hình dung logic, nhưng tôi có thể đảm bảo rằng nó hoạt động giống hệt nhau trong mọi trường hợp có thể.