การควบคุมเวอร์ชันควรมีรหัสและการกำหนดค่าที่จำเป็นในการสร้างแอปพลิเคชัน
ซึ่งหมายความว่า:
สิ่งชั่วคราวที่ถูกนำมาใช้ในระยะเวลาอันสั้น (เวลาที่ต้องการระบุตำแหน่งของบั๊กหรือเพื่อทดสอบด้วยคุณสมบัติของภาษาเป็นต้น) ไม่ควรอยู่ในการควบคุมเวอร์ชัน: เก็บไว้จนกว่าคุณจะต้องการ จากนั้นก็เอามันออกเมื่อทำกระทำ
ไฟล์ในเครื่องที่เหมาะสมกับเครื่องบางเครื่องอาจถูกเก็บไว้ในสาขา
ฉันจะหลีกเลี่ยงการเก็บไว้ในเครื่องเนื่องจากมันเจ็บปวดเกินกว่าที่จะทำซ้ำสิ่งนี้เมื่อแล็ปท็อปของคุณถูกขโมยหรือไวรัสบังคับให้คุณติดตั้งระบบปฏิบัติการใหม่ (และคุณพบว่าการสำรองข้อมูลครั้งล่าสุดของคุณเสร็จสิ้นเมื่อสองปี .
ในทางกลับกันให้ระวังโครงสร้างไฟล์: การกำหนดค่าในระบบเป็นปกติจนกระทั่งมันล้นหลามและบังคับให้คุณทำการเปลี่ยนแปลงเดียวในทุก ๆ ไฟล์ของนักพัฒนา 42 คนทุกคนที่เข้าร่วมโครงการ
คอยดูโอกาสในการลบลักษณะเฉพาะระหว่างเครื่อง มันอาจหมายถึง:
ให้สิทธิ์เข้าถึงเซิร์ฟเวอร์ dev SQL เพื่อแทนที่อินสแตนซ์ในเครื่องของนักพัฒนาซอฟต์แวร์
การใช้บริการกระจายแพคเกจเช่นPypiหรือnpmสำหรับแพ็คเกจสาธารณะและคู่หูส่วนตัวของพวกเขาสำหรับแพ็คเกจภายในองค์กร
ขอให้สมาชิกของทีมติดตั้งซอฟต์แวร์เวอร์ชันเดียวกัน
ทำให้การอัปเดตซอฟต์แวร์โปร่งใสที่สุด
หรือทำให้เป็นไปได้ในการปรับใช้ระบบปฏิบัติการและซอฟต์แวร์ที่จำเป็นบนเครื่องได้ในคลิกเดียว (รวมถึงเวลาสำหรับนักพัฒนาซอฟต์แวร์ทุกคนในการติดตั้ง Vim vs. Emacs, Chrome vs. Firefox, ฯลฯ )
ดังนั้น:
ไฟล์โครงการ อาจจำเป็นต้องแก้ไขพา ธ เพื่อให้แสดงเลย์เอาต์บนพีซีปัจจุบัน
ทำไมไม่ใช้เค้าโครงเดียวกันบนพีซีทุกเครื่อง? เส้นทางภายในโครงการควรสัมพันธ์กับไฟล์โครงการซึ่งหมายความว่ามันไม่สำคัญว่าจะอยู่ที่ใดของโครงการ รุ่นของซอฟต์แวร์และไลบรารี่จะดีกว่าที่จะเหมือนกันเพื่อหลีกเลี่ยงข้อผิดพลาดที่ซ่อนเร้นซึ่งปรากฏในเครื่องบางเครื่องเท่านั้นและเป็นไปไม่ได้ที่จะทำซ้ำสำหรับสมาชิกคนอื่น ๆ ในทีม
ตัวอย่าง:
ในโครงการที่สร้างด้วย Visual Studio คุณอาจพบ:
ตัวไฟล์เอง เส้นทางการเป็นญาติมันไม่สำคัญว่าในเครื่องของฉันโครงการตั้งอยู่ในH:\Development\Hello World Project\
ขณะที่สมาชิกคนอื่น ๆ C:\Work\HelloWorld\
ของทีมออกตรวจสอบโครงการลง
การอ้างอิงเช่นบุคคลที่สามและห้องสมุดภายใน ควรจัดการทั้งสองประเภทโดย NuGet ซึ่งทำให้การสนทนาที่เกี่ยวข้องกับความขัดแย้งทั้งหมดล้าสมัย หากคุณไม่มีห้องสมุดรุ่นเดียวกันฉันขอให้ NuGet อัปเดตการอ้างอิง ง่ายเหมือนที่ (เมื่อมันทำงานได้ดีซึ่งไม่ได้เป็นอย่างนั้นเสมอ)
โปรดทราบว่ามันเป็นสิ่งสำคัญที่จะต้องเก็บรักษาห้องสมุดในบ้านใน NuGet ส่วนตัวเช่นกัน การมีห้องสมุดจำนวนมากเก็บไว้ในโฟลเดอร์ที่ใช้ร่วมกันหรือส่งทางอีเมลข้ามทีมจะนำไปสู่เซิร์ฟเวอร์อนาธิปไตยและเซิร์ฟเวอร์ CI ที่ซึมเศร้า
การตั้งค่า มันสำคัญมากที่ทีมจะต้องแบ่งปันการตั้งค่าเดียวกัน หากครึ่งหนึ่งของทีมตัดสินใจที่จะปฏิบัติต่อคำเตือนว่าเป็นข้อผิดพลาดและครึ่งหนึ่งของทีมยังคงเตือนเหมือนเดิมสมาชิกของส่วนแรกของทีมจะใช้เวลาในการลบคำเตือนที่นักพัฒนาสร้างขึ้นจากส่วนที่สองของทีม
การตั้งค่าที่เกี่ยวข้องกับยูทิลิตี้ สิ่งเหล่านี้เป็นเรื่องยุ่งยากเพราะสมาชิกบางคนในทีมอาจติดตั้งยูทิลิตี้บางอย่างในขณะที่คนอื่นไม่
ขอแนะนำอย่างยิ่งให้ติดตั้งชุดเครื่องมือชุดเดียวกัน หากโปรแกรมเมอร์บางคนต้องการใช้ StyleCop แต่คนอื่นทำไม่ได้ทีมจะไม่ทำงาน หากบางคนใช้สัญญารหัส แต่คนอื่นไม่ทำพวกเขาจะมีปัญหาเดียวกัน
makefiles ตัวอย่างเช่นการปรับให้เหมาะสมอาจต้องปิดในระหว่างการดีบัก แต่ไม่ใช่สำหรับเซิร์ฟเวอร์ CI
รักษาหลาย makefiles ในการควบคุมเวอร์ชัน ไม่ผิดปกติในการสร้างเวอร์ชันการดีบักบนเซิร์ฟเวอร์ CI เช่นกันและส่งไปยังไคลเอนต์ที่พบข้อบกพร่องที่ยุ่งยาก
แฮ็กสกปรกน่าเกลียด ตัวอย่างเช่นคืนค่า 7 ระหว่างฟังก์ชันเพื่อทดสอบบางอย่างขึ้นอยู่กับฟังก์ชันและสงสัยว่าจะแตกที่ค่า 7
ฉันจะหลีกเลี่ยงรหัสดังกล่าวตั้งแต่แรก ในการทดสอบบางอย่างให้ใช้การทดสอบหน่วย หากใช้เวลาสองสามวินาทีเพื่อสลับรหัสบางส่วนเพื่อการดีบักให้ทำ แต่คุณจะลบรหัสนี้ในไม่กี่นาทีอย่างไรก็ตามไม่จำเป็นต้องส่งรหัสนี้อีก
ตามที่คุณอธิบายคุณควรเขียนข้อสอบ ตัวอย่างเช่นหากคุณต้องการแน่ใจว่า:
class TemperatureConverter
{
public int CelsiusToFahrenheit(int temperature)
{
...
}
}
โยนข้อยกเว้นเมื่อtemperature
เป็นรองAbsoluteZero
ค่าคงที่คุณไม่ควรเล่นด้วยรหัสเอง ให้สร้างการทดสอบหน่วยที่จะ:
- จัดทำเอกสารรหัสของคุณด้วยตนเอง
- เพิ่มความน่าเชื่อถือของรหัสของคุณ
- ตรวจสอบให้แน่ใจว่าผู้ดูแลสามารถพึ่งพาการทดสอบการถดถอยเมื่อแก้ไขวิธีข้างต้น
- ให้บริการกับนักพัฒนาคนอื่น ๆ ในทีมของคุณที่อาจต้องทำแบบทดสอบเดียวกัน