2014年5月4日 星期日

[Code Review] Team 01 - Hw08

執行檔
Shape3D.cs
Shape3DType.cs
IRollable.cs
Ball.cs
Cylinder.cs
Square.cs
Pyramid.cs
Form.cs

5 則留言:

  1. 第四組
    連用2個鋁球 按創造順序排 在按計算就掛了 跟我一樣= =

    回覆刪除
    回覆
    1. 把a.ShaType > b.ShaType的>變>=說不定就可以了

      刪除
    2. 我們測試的結果並沒有你說的問題......

      刪除
    3. @施文浩:
      你是在XP的作業系統執行程式嗎? 我們這組測試過,XP會有這種問題,Win7沒有. C#是用2010的.
      初步研究後,可能是List.Sort()內部使用的排序方法不同造成的影響.
      不過只要加入判斷"相同數值"的情況,程式就可以過.
      所以寫比較器最好還是把>,=,<三種情況都考慮進去.

      刪除
  2. 我覺得這份已經算是蠻完整的程式,而且也沒有太大的問題,但我認為有些地方可以再加強,因此用條列的方式說明如下:

    ———————————————————————————
    1.
    根據規則:
      2.2 Name Usage & Syntax
      Field: Avoid using non-private Fields!
    問題點:
      Shape3D 第4~8行
    建議:
      protected 修改成 private,並在屬性設定權限。
    ———————————————————————————
    2.
    根據規則:
      1.4.1 Naming Conventions
      Field
      Protected: P
      Private: _c
    問題點:
      Shape3D 第4~8行
      Ball 第4~5行
      Cylinder 第4~6行
      Square 第4~5行
      Pyramid 第4~6行
    建議:
      若使用protected,則欄位使用帕斯卡命名法;若修改成private,則建議加底線於字首前 (_)。
    ———————————————————————————
    3.
    根據規則:
      3.1 Formatting
      Rule 8.
      Group internal class implementation by type in the following order:
      a. Member variables.
      b. Constructors & Finalizers.
      c. Nested Enums, Structs, and Classes.
      d. Properties
      e. Methods
    問題點:
      Shape3D 第9~38行
      Ball 第6~26行
      Cylinder 第7~32行
      Square 第6~25行
      Pyramid 第7~32行
    建議:
      建議將Constructor寫在Properties前面,以符合規定。
    ———————————————————————————
    4.
    根據規則:
      2.2 Name Usage & Syntax
      Method
      Try to use a Verb or Verb-Object pair.
    問題點:
      Shape3D 第40行
      Shape3D 第54行
      Shape3D 第56行
      IRollable 第3行
    建議:
      方法命名時建議加入動詞。
    ———————————————————————————
    5.
    根據規則:
      1.4.1 Naming Conventions
      Method
      Public: P
    問題點:
      Shape3D 第44行
    建議:
      displayProperty 修改成 DisplayProperty。
    ———————————————————————————
    6.
    根據規則:
      Logic error.
    問題點:
      創建4個物件,然後移除2次編號0的物件,再創建1個物件,接著依照創建順序排序,其排序結果有誤。
    建議:
      修改ball.Order = arrShape.Count;
      cylinder.Order = arrShape.Count;
      square.Order = arrShape.Count;
      pyramid.Order = arrShape.Count;
    ———————————————————————————
    7.
    根據規則:
      3.1 Formatting
      Rule 4.
      Always use curly braces ({ and }) in conditional statements.
    問題點:
      Form1 第141行
      Form1 第207行
      Form1 第213行
      Form1 第219行
      Form1 第225行
    建議:
      即使只有一行,仍然建議使用大括號。
    ———————————————————————————
    8.
    根據規則:
      4.2 Variables & Types
      Rule 7.
      Try to initialize variables where you declare them.
    問題點:
      Shape3D 第6~7行
      Ball 第5行
      Cylinder 第5~6行
    建議:
      建議在宣告時加入初始值。

    回覆刪除