Skip to content

Learning from the project

Suthep Sangvirotjanaphat edited this page May 17, 2015 · 4 revisions

องค์ประกอบต่างๆ ในการทำโปรเจ็กต์

  • Unit testing
  • Code Contract
  • NuGet
  • GitHub
  • AppVeyor
  • ...

ข้อควรระวัง

  • ให้แน่ใจว่า Dll ที่ build เป็นตัวเดียวกันกับที่ได้ทำ Unit Testing
  • ให้แน่ใจว่า Dll ที่ build และรัน unit test แล้ว เป็น Dll ตัวเดียวกันกับที่ publish ขึ้น NuGet

การตั้งชื่อ

  • ชื่อ GitHub Repository: ควรเป็นชื่อเดียวกับ NuGet Package Id และควรสั้นๆ ไม่ต้องมีชื่อบริษัท ชื่อผู้ทำ อะไร เรียบง่ายดีกว่า เช่น ชื่อ ThaiBahtText ดีกว่า GreatFriends.ThaiBahtText คนจำง่ายกว่า และพิมพ์สั้นกว่า
  • ชื่อ namespace: เอาชื่อบริษัท หรือแบรนด์ที่ต้องการมาใส่ที่นี่ดีกว่า เช่น namespace GreatFriends.ThaiBahtText

xUnit 2.0

ใช้ xUnit test runner แบบ console เร็วและเสถียรกว่าการใช้ Visual Studio runner ผมสร้าง batch file test.bat เพื่อเรียกผ่าน command prompt และดูรายละเอียดจากไฟล์ผลลัพธ์ในรูปแบบ html โดยสร้างไฟล์ชื่อ Result.html ที่โฟลเดอร์ของ solution

การใช้ xUnit 2.0 ITestOutputHelper

สามารถใส่ข้อความเพิ่มเข้าไปใน test result การใช้ Console.WriteLine ถือเป็นวิธีการที่ไม่แนะนำ (เพราะจะดูผ่าน Visual Studio ไม่ได้) วิธีการใช้ มีโค้ดดังนี้

public class SomeFacts {

  private readonly ITestOutputHelper output;

  public SomeFacts(ITestOutputHelper output) {
    this.output = output;
  }

  // uses 'output' just like Console.WriteLine method
}

Visual Studio Code

ใช้เขียนโค้ดยังไม่สะดวกเท่าไหร่ แต่ที่ดีเลิศคือใช้เป็น git client สามารถย้ายไฟล์เข้าออกจาก stage และทำการ commit ดู diff ได้อย่างดีมากๆ เมื่อ commit เสร็จแล้ว ใช้ Git Bash เพื่อทำการ push ขึ้น GitHub ต่อไป

Git Bash

ในระหว่างพยายามทำให้ Visual Studio Code สามารถ push/pull ได้ แต่ไม่สำเร็จ ก็พบว่าใช้ git bash แทน command prompt เพื่อทำการ git push / git pull โดยไม่ต้องพิมพ์รหัสผ่านทุกๆ ครั้งได้สำเร็จ

เมื่อเปิด Git Bash ขึ้นมาทุกครั้ง ให้พิมพ์คำสั่งต่อไปนี้ โดยตรงกรอกรหัสผ่านหนึ่งครั้ง

$ eval "$(ssh-agent)"
$ ssh-add

หลังจากนั้นการใช้คำสั่ง git push และ git pull จะไม่ต้องพิมพ์รหัสอีกเลย

Code Contracts

ควรใส่ code contracts ด้วย ทำอย่างน้อยให้เป็น static checking และตรวจสอบผลลัพธ์จาก Output window

GitHub

  • Issues และ Milestone เป็นประโยชน์กับการทำงานมาก
  • ดู diff เปรียบเทียบ tag ล่าสุด กับ master เพื่อรวบรวมสิ่งที่เปลี่ยนแปลงเพิ่มเติมจากรีลิสก่อนได้อย่างสะดวก