6
การแยกโครงการยูทิลิตี“ ปึกแผ่น” ออกเป็นส่วนประกอบแต่ละส่วนด้วยการพึ่งพา“ ทางเลือก”
ในช่วงหลายปีที่ผ่านการใช้ C # /. NET สำหรับโครงการภายในองค์กรเรามีห้องสมุดหนึ่งแห่งที่เติบโตขึ้นอย่างเป็นองค์กร มันถูกเรียกว่า "Util" และฉันแน่ใจว่าพวกคุณหลายคนเคยเห็นสัตว์ร้ายตัวนี้ในอาชีพของคุณ หลายส่วนของไลบรารีนี้เป็นแบบสแตนด์อโลนและสามารถแบ่งออกเป็นโครงการแยกต่างหาก (ซึ่งเราต้องการเปิดแหล่งที่มา) แต่มีปัญหาสำคัญอย่างหนึ่งที่ต้องแก้ไขก่อนที่สิ่งเหล่านี้จะถูกปล่อยเป็นห้องสมุดแยกต่างหาก โดยทั่วไปมีหลายกรณีที่ฉันอาจเรียกว่า"การพึ่งพาเพิ่มเติม"ระหว่างไลบรารีเหล่านี้ เพื่ออธิบายสิ่งนี้ให้ดีขึ้นพิจารณาบางส่วนของโมดูลที่เป็นตัวเลือกที่ดีในการเป็นห้องสมุดแบบสแตนด์อะโลน CommandLineParserใช้สำหรับการแยกบรรทัดคำสั่ง XmlClassifyใช้สำหรับการทำให้คลาสเป็นอนุกรมเป็น XML PostBuildCheckทำการตรวจสอบในแอสเซมบลีที่คอมไพล์แล้วและรายงานข้อผิดพลาดการคอมไพล์ถ้าพวกเขาล้มเหลว ConsoleColoredStringเป็นห้องสมุดสำหรับตัวอักษรสตริงสี Lingoสำหรับแปลอินเทอร์เฟซผู้ใช้ แต่ละไลบรารีเหล่านี้สามารถใช้งานแบบสแตนด์อโลนได้อย่างสมบูรณ์ แต่หากใช้ร่วมกันจะมีคุณสมบัติพิเศษที่มีประโยชน์ ยกตัวอย่างเช่นทั้งสองCommandLineParserและเปิดเผยการทำงานตรวจสอบการโพสต์การสร้างที่ต้องใช้XmlClassify PostBuildCheckในทำนองเดียวกันCommandLineParserช่วยให้เอกสารตัวเลือกที่จะให้ใช้ตัวอักษรของสตริงสีที่กำหนดและสนับสนุนเอกสารแปลผ่านทางConsoleColoredStringLingo ดังนั้นความแตกต่างที่สำคัญคือว่าเหล่านี้เป็นคุณสมบัติเสริม หนึ่งสามารถใช้ตัวแยกวิเคราะห์บรรทัดคำสั่งกับสตริงธรรมดาไม่มีสีโดยไม่ต้องแปลเอกสารหรือดำเนินการตรวจสอบหลังการสร้างใด ๆ หรืออาจทำให้เอกสารแปลได้ แต่ยังคงไม่มีสี หรือทั้งสีและแปลได้ เป็นต้น เมื่อมองผ่านห้องสมุด "Util" นี้ฉันเห็นว่าห้องสมุดที่อาจแยกได้เกือบทั้งหมดมีคุณสมบัติที่เป็นทางเลือกเช่นนี้ซึ่งผูกไว้กับไลบรารีอื่น ๆ ถ้าฉันต้องการห้องสมุดเหล่านั้นจริงๆแล้วการพึ่งพาสิ่งต่าง ๆ นี้ไม่ได้ถูกยกเลิกการผูกมัดจริงๆ: คุณยังคงต้องการไลบรารีทั้งหมดถ้าคุณต้องการใช้เพียงอันเดียว มีวิธีการที่จัดตั้งขึ้นเพื่อจัดการการพึ่งพาทางเลือกเช่นใน.