Simple vs Complex (แต่มีประสิทธิภาพด้านประสิทธิภาพ) โซลูชัน - ตัวเลือกใดและเมื่อใด


28

ฉันเขียนโปรแกรมมาสองสามปีและมักพบว่าตัวเองอยู่ในภาวะที่กลืนไม่เข้าคายไม่ออก

มีสองวิธีคือ -

  • วิธีการหนึ่งเป็นแบบง่ายเช่นวิธีการแบบง่ายเข้าใจและบำรุงรักษาได้ง่ายขึ้น มันเกี่ยวข้องกับความซ้ำซ้อนบางงานพิเศษ (IO เพิ่มเติมการประมวลผลพิเศษ) และดังนั้นจึงไม่ใช่ทางออกที่ดีที่สุด
  • แต่วิธีอื่น ๆ ใช้วิธีการที่ซับซ้อนยากที่จะนำไปใช้มักจะเกี่ยวข้องกับการปฏิสัมพันธ์ระหว่างโมดูลจำนวนมากและเป็นโซลูชันที่มีประสิทธิภาพ

โซลูชันใดที่ฉันควรพยายามเมื่อฉันไม่มี SLA ที่มีประสิทธิภาพสูงเพื่อตอบสนองและแม้แต่โซลูชันที่เรียบง่ายสามารถตอบสนองประสิทธิภาพ SLA ได้ ฉันรู้สึกรังเกียจในหมู่ผู้พัฒนาเพื่อนของฉันสำหรับวิธีแก้ปัญหาอย่างง่าย

เป็นวิธีปฏิบัติที่ดีหรือไม่ในการหาวิธีแก้ปัญหาที่ซับซ้อนที่สุดหาก SLA ประสิทธิภาพของคุณสามารถพบได้โดยวิธีง่ายๆ


10
ดู: ฉันจะหลีกเลี่ยง "สัญชาตญาณการเพิ่มประสิทธิภาพที่ไม่ดีของนักพัฒนา" ได้อย่างไร "น่าเสียดายที่นักพัฒนามักจะมีปรีชาญาณที่น่ากลัวว่าปัญหาด้านประสิทธิภาพในแอปพลิเคชันจะเป็นอย่างไร ... "
gnat

1
"ไม่ดีที่สุด" จะยังคง "ดีพอ" หรือไม่ จากนั้นอยู่กับที่

8
อ๋อ " Le mieux est l'ennemi du bien. " วอลแตร์ ("สมบูรณ์แบบเป็นศัตรูของความดี") ดีพอก็ดีพอ - จนกว่าการทดสอบประสิทธิภาพจะบอกเป็นอย่างอื่น
David Hammen

ฉันพบว่าเรียบง่าย (โดยทั่วไป) หมายถึงมีประสิทธิภาพ ดังนั้นบ่อยครั้งที่ไม่จำเป็นต้องประนีประนอม
ด่าน

2
“ ดูเหมือนว่าความสมบูรณ์แบบนั้นจะไม่เกิดขึ้นเมื่อไม่มีสิ่งใดเพิ่มเติมที่จะเพิ่ม แต่เมื่อไม่มีสิ่งใดต้องลบอีกต่อไป” - Antoine de Saint-Exupery
keuleJ

คำตอบ:


58

โซลูชันใดที่ฉันควรพยายามเมื่อฉันไม่มี SLA ที่มีประสิทธิภาพสูงเพื่อตอบสนองและแม้แต่โซลูชันที่เรียบง่ายสามารถตอบสนองประสิทธิภาพ SLA ได้

เรื่องง่าย ๆ มันตรงตามข้อกำหนดง่ายต่อการเข้าใจรักษาได้ง่ายกว่าและอาจเป็นรถบักกี้น้อยกว่า

สิ่งที่คุณกำลังทำในการสนับสนุนโซลูชันที่มีประสิทธิภาพคือการแนะนำความคิดโดยทั่วไปและการเพิ่มประสิทธิภาพก่อนวัยอันควรลงในโค้ดของคุณ อย่าทำมัน! ประสิทธิภาพเหนือสิ่งอื่นใดในวิศวกรรมซอฟต์แวร์ 'ility' ที่มีอยู่ (ความน่าเชื่อถือการบำรุงรักษาการอ่านการทดสอบความเข้าใจ ... ) ประสิทธิภาพการไล่ล่าเมื่อการทดสอบบ่งชี้ว่ามีความจำเป็นในการไล่ล่าหลังการทำงานอย่างแท้จริง

อย่าไล่ล่าประสิทธิภาพเมื่อประสิทธิภาพไม่สำคัญ แม้ว่าจะเป็นเรื่องสำคัญคุณควรไล่ล่าประสิทธิภาพในพื้นที่เหล่านั้นที่การทดสอบแสดงให้เห็นว่ามีปัญหาคอขวดของการทำงานอยู่ อย่าปล่อยให้ปัญหาด้านประสิทธิภาพเป็นข้ออ้างที่จะแทนที่simple_but_slow_method_to_do_X()ด้วยเวอร์ชันที่เร็วกว่านี้หากเวอร์ชันแบบง่ายนั้นไม่แสดงเป็นคอขวด

ประสิทธิภาพที่เพิ่มขึ้นนั้นเกือบจะหลีกเลี่ยงไม่ได้กับปัญหาเรื่องกลิ่นโค้ด คุณพูดถึงคำถามหลายข้อ: วิธีการที่ซับซ้อนยากที่จะใช้งานการมีเพศสัมพันธ์ที่สูงขึ้น สิ่งเหล่านั้นคุ้มค่าที่จะลากเข้ามาใช่หรือไม่?


คำตอบของคุณมีประโยชน์มาก
MoveFast

1
ง่ายที่สุดเท่าที่จะทำได้ แต่ไม่ง่ายกว่า; เร็วที่สุด แต่ไม่ใช่เร็วกว่า; ฯลฯ
606723

2
"หากมีข้อสงสัยให้ใช้กำลังดุร้าย";)
tdammers

ความคิดเห็นในรหัสสามารถเป็นได้ทั้งการระบายและเป็นประโยชน์ที่นี่ ความคิดเห็นเล็ก ๆ ที่ชี้ให้เห็นวิธีการแก้ปัญหาที่รวดเร็วและซับซ้อนและทำไมคุณไม่ใช้มันจะทำให้คุณรู้สึกว่าคุณไม่สนใจอัลกอริธึมที่เหมาะสมที่สุด และช่วยให้ผู้ดูแลระบบเข้าใจตัวเลือกของคุณและชี้แนะพวกเขาในทิศทางที่ถูกต้องหากจำเป็นต้องปรับให้เหมาะสมในภายหลัง
TheAtomicOption

12

คำตอบสั้น:ต้องการโซลูชั่นที่เรียบง่ายกว่าที่ซับซ้อนและจำKISS และ YAGNIหลักการ

เนื่องจากข้อกำหนดเบื้องต้นของโครงการและซอฟต์แวร์ไม่สมบูรณ์แบบจึงจำเป็นต้องมีการเปลี่ยนแปลงเมื่อมีการพัฒนา / ใช้งานแอปพลิเคชัน แนวทางการวนซ้ำในขั้นตอนการพัฒนาเป็นสิ่งที่ดีมากในการเริ่มต้นสิ่งต่าง ๆ ที่เรียบง่ายและขยายได้ตามต้องการ โซลูชันที่ง่ายที่สุดมีพื้นที่สำหรับความยืดหยุ่นและง่ายต่อการบำรุงรักษา

นอกจากนี้การพยายามฉลาดและวางการเพิ่มประสิทธิภาพบางอย่างในขณะที่ยังคงสร้างแอปพลิเคชันของคุณไม่ใช่วิธีปฏิบัติที่ดีและอาจทำให้โซลูชันของคุณซับซ้อนเกินไป ตามที่เป็นที่รู้จัก"premature optimization is the root of all evil"- จากหนังสือของ Knuth


1
@ManojGumber ไม่มีปัญหาและเป็นสาระสำคัญจริงๆสิ่งที่เราในฐานะโปรแกรมเมอร์ควรใส่ใจตั้งแต่แรก
EL Yusubov

8

เรียนบทเรียนจาก Knuth ที่นี่: "เราควรลืมเกี่ยวกับประสิทธิภาพเล็กน้อยพูดถึง 97% ของเวลา: การเพิ่มประสิทธิภาพก่อนวัยอันควรเป็นรากฐานของความชั่วร้ายทั้งหมด"

คิดถึงวิธีแก้ปัญหาของคุณตามลำดับนี้: อันดับแรกเสมอถูกต้อง ประการที่สองปรับปรุงความคมชัดและความเรียบง่าย ประการที่สามและเฉพาะเมื่อคุณสามารถแสดงให้เห็นถึงความต้องการประสิทธิภาพ

การเพิ่มประสิทธิภาพมักจะทำให้คุณเสียค่าใช้จ่ายที่สำคัญและควรติดตามเมื่อคุณรู้ว่าคุณต้องการ


4
โปรดทราบว่านี่ไม่ได้หมายความว่าคุณไม่ควรเขียนการใช้งานที่ดีตั้งแต่แรก

@ ThorbjørnRavnAndersen: แน่นอนนั่นคือสิ่งที่จุดสองจุดแรกนั้นเกี่ยวกับ
simon

1
@simon คำพูดที่ใช้บ่อยเป็นข้อแก้ตัวในการเลือกอย่าง

เกี่ยวกับประเด็นที่สองของคุณ: ฉันมีเพื่อนร่วมงานซึ่งมักกล่าวว่าเขาชอบโค้ดที่มีโครงสร้างและทำความสะอาดไม่ถูกต้องก่อนปาเก็ตตี้ที่ถูกต้อง
Buhb

@ ThorbjørnRavnAndersenคนไร้ความสามารถจะใช้อะไรเป็นข้อแก้ตัว ไม่มีผลกระทบใด ๆ ต่อคุณค่าของความคิดดั้งเดิม
simon

7

ความเรียบง่ายเป็นสิ่งที่จำเป็นของความน่าเชื่อถือ หากคุณมีวิธีแก้ปัญหาง่ายๆที่ใช้งานได้โดยทั้งหมดไปเลย! มันง่ายกว่ามากในการปรับแต่งโปรแกรมที่ใช้งานให้ทำงานมากกว่าโปรแกรมที่ปรับให้เหมาะสม อย่าลืมกฎของมัวร์ด้วย : ถ้าทางออกง่ายๆของคุณบรรลุเป้าหมายด้านประสิทธิภาพในวันนี้มันอาจจะทำลายพวกเขา1ในปีหรือสองปี


1ไม่มีการรับประกันที่นั่นเพราะอย่างที่จิมมี่ฮอฟฟาระบุไว้ในความคิดเห็นของเขาด้านล่างกฎของมัวร์มีข้อ จำกัด


คุณลืมเกี่ยวกับกฎหมายอื่น ๆ ของมัวร์ที่ระบุว่า "อ๊ะเกี่ยวกับกฎข้อแรกของฉัน .. " หัวหน้าขออภัยกฎหมายของมัวร์ไม่มีอีกแล้ว (ปุนปุน) ฉันไม่เห็นด้วยกับส่วนที่เหลือของคุณฉันจะอย่างน้อยก็ข้อแม้ที่สุดท้ายที่นั่น
จิมมี่ฮอฟฟา

2
ขออภัยด้วยประสบการณ์ทั้งหมดของฉันในอุตสาหกรรมนี้ "ชุดการทำงาน" กำลังเพิ่ม FAR เร็วกว่าความเร็วของฮาร์ดแวร์ของเราซึ่งได้รับการอัพเกรดอย่างต่อเนื่อง จริง ๆ แล้วฉันจะลบจุดกฎของมัวร์
606723

@ user606723 การเจริญเติบโตของจุด "ชุดงาน" เป็นคำถามที่ตั้งฉากกับคำถาม "ปรับหรือเรียบง่าย": ปริมาณงานจะติดต่อกับพวกเขาโดยไม่คำนึงถึงวิธีการแก้ปัญหาที่พวกเขาใช้ ประเด็นที่นำกฎของมัวร์มาใช้ในการผสมผสานคือการชี้ให้เห็นว่าแม้ว่าวิธีการแก้ปัญหาอย่างง่ายจะอยู่ภายใต้แรงกดดันด้านประสิทธิภาพในขณะที่เขียน แต่ความดันจะลดลงเมื่อมีฮาร์ดแวร์ให้ใช้งานได้เร็วขึ้น
dasblinkenlight

@dasblinkenlight การเติบโตของชุดงานไม่มีฉากสำหรับคำถามมากกว่ากฎของมัวร์คือ ประเด็นของการนำ workset มาสู่ปัญหาคือถ้าโซลูชันง่าย ๆ อยู่ภายใต้แรงกดดันด้านประสิทธิภาพ ณ เวลาที่วางจำหน่ายประสิทธิภาพจะไม่เพียงพอในอนาคตอันใกล้เนื่องจากชุดงานที่เพิ่มขึ้นจะทำลายการปรับปรุงประสิทธิภาพที่ทำได้โดยฮาร์ดแวร์ที่ปรับปรุงใหม่ ในขณะที่ฉันทั้งหมดสำหรับซอฟต์แวร์ที่ง่ายเชื่อถือได้และบำรุงรักษาได้ปล่อยซอฟต์แวร์ที่มีอยู่แล้วภายใต้ความกดดันด้านประสิทธิภาพในการเปิดตัวและคาดหวังว่ากฎของมัวร์จะเป็นสิ่งที่ดี
user606723

3

เป็นวิธีปฏิบัติที่ดีหรือไม่ในการหาวิธีแก้ปัญหาที่ซับซ้อนที่สุดหาก SLA ประสิทธิภาพของคุณสามารถพบได้โดยวิธีง่ายๆ

คำที่เหมาะสมที่สุดคือคำที่คลุมเครือ!

ในที่สุดหากมีความเสี่ยงมากในการรักษาคอมเพล็กซ์และถ้าวิแบบง่ายคือ "ดีพอ" ฉันมักจะทำผิดด้านคนเรียบง่าย

เพิ่มความเสี่ยงใด ๆ ที่ซับซ้อนไม่ดีพอ KISS น่าจะเป็นคำตอบที่ถูกต้อง


2

ฉันชอบแบบง่าย ๆ ในความคิดของฉันการเพิ่มประสิทธิภาพก่อนวัยอันควรทำให้เกิดปัญหามากที่สุดเท่าที่พวกเขาแก้ปัญหา ในหลายกรณีการออกแบบที่ดีช่วยให้คุณสามารถเปลี่ยนการใช้งานที่กำหนดในอนาคตหากพวกเขากลายเป็นคอขวด

ดังนั้นที่บรรทัดล่าง - ฉันจะออกแบบให้มีความยืดหยุ่นมากที่สุด แต่จะไม่เสียสละความเรียบง่ายเพื่อความยืดหยุ่นมากเกินไป


2

อันไหนที่มีค่าใช้จ่ายน้อยกว่า

ส่วนใหญ่แล้วโซลูชันที่เรียบง่ายซึ่งช้ากว่าเล็กน้อยจะเป็นที่ยอมรับอย่างสมบูรณ์ในแง่ของประสิทธิภาพและความเรียบง่ายทำให้ราคาถูกลงในการพัฒนาบำรุงรักษาและทดแทนในที่สุด

ในทางกลับกันบางครั้งความเร็วนั้นสำคัญมากและผลกำไรทางการเงินที่มาจากการปรับปรุงความเร็วขนาดเล็กอาจมากกว่าค่าใช้จ่ายที่เพิ่มขึ้นของโซลูชันที่ซับซ้อนมากขึ้น ตัวอย่างเช่นการตัดเวลา 0.01s ในการทำธุรกรรมจนเสร็จสมบูรณ์สามารถทำให้ระบบการซื้อขายหลักทรัพย์มีกำไรมากขึ้น การปรับปรุงประสิทธิภาพ 10% ของระบบที่สนับสนุนผู้ใช้หลายล้านคนอาจหมายถึงการลดต้นทุนเซิร์ฟเวอร์อย่างมาก

ดังนั้นคำถามที่คุณต้องถามตัวเองคือ: การใช้โซลูชันที่ซับซ้อนมีผลกระทบกับกำไรมากพอที่จะจ่ายค่าใช้จ่ายเพิ่มเติมหรือไม่? ที่จริงแล้วคุณควรขอให้ลูกค้าตัดสินใจเนื่องจากพวกเขาจ่ายเงินและรับผลประโยชน์ที่อาจเกิดขึ้น ทางเลือกที่ดีอย่างหนึ่งคือไปกับโซลูชันที่เรียบง่ายเสียก่อนและเสนอวิธีแก้ปัญหาที่ซับซ้อนกว่าเพื่อการปรับปรุงที่เป็นไปได้ สิ่งนี้จะช่วยให้คุณสามารถเริ่มต้นระบบและใช้งานและให้บางสิ่งบางอย่างแก่ลูกค้าของคุณเพื่อเริ่มการทดสอบและประสบการณ์นั้นอาจแจ้งให้ทราบถึงการตัดสินใจที่จะใช้ (หรือไม่ใช้) โซลูชั่นที่ซับซ้อนมากขึ้น


2

เมื่อประเมินสองแนวทางวิธีหนึ่งจะง่ายกว่า แต่มีประสิทธิภาพน้อยกว่าในขณะที่วิธีอื่น ๆ มีความซับซ้อนและมีประสิทธิภาพมากขึ้นเราต้องพิจารณาปัญหาและโดเมนโครงการ

พิจารณาโครงการซอฟต์แวร์หลายพันล้านรายการสำหรับอุตสาหกรรมการดูแลสุขภาพซึ่งได้วางแผนอายุการใช้งานมานานกว่า 15 ปีของการบำรุงรักษาและการใช้งาน +20 ปี ในประสิทธิภาพของโครงการดังกล่าวจะไม่เป็นปัญหา แต่ความซับซ้อนและโครงสร้างของโครงการอาจทำให้เกิดปัญหาใหญ่สำหรับการบำรุงรักษาของโครงการซึ่งใช้เวลา 15 ปีเป็นอย่างน้อย การบำรุงรักษาและความเรียบง่ายมาก่อนอะไร

จากนั้นให้พิจารณาอีกตัวอย่างหนึ่ง เอ็นจิ้นเกมคอนโซลที่ควรจะเพิ่มพลังให้กับเกมที่กำลังจะมาถึงในอีก 5 ปีข้างหน้า เนื่องจากเกมเป็นโปรแกรมที่มีการ จำกัด ทรัพยากรอย่างมากประสิทธิภาพไปก่อนการบำรุงรักษาในหลาย ๆ กรณี การเขียนโครงสร้างข้อมูลและอัลกอริธึมเฉพาะของคุณเองสำหรับงานบางอย่างอาจมีความสำคัญมากแม้ว่ามันจะขัดกับ "แนวทางปฏิบัติที่ดีที่สุด" ของการพัฒนาซอฟต์แวร์ ตัวอย่างที่ดีของสิ่งนี้คือData Oriented Designที่คุณเก็บข้อมูลของคุณในอาร์เรย์ข้อมูลที่คล้ายกันแทนที่จะเป็นวัตถุจริง นี่คือการเพิ่มการอ้างอิงของท้องถิ่นและเพิ่มประสิทธิภาพแคช CPU ไม่ใช้งานได้จริง แต่สำคัญมากในโดเมนที่ให้


1

นี่เป็นคำถามที่ยากเสมอและฉันเห็นคำตอบที่แกว่งไปมาทางหนึ่งดังนั้นฉันจะเล่นเกมให้อีกด้านหนึ่ง แต่ฉันไม่ได้อ้างว่าคำตอบนั้นถูกต้องมันเป็นหัวข้อที่นุ่มนวลและเป็นกรณี ๆ ไป

สิ่งหนึ่งที่เกี่ยวกับโซลูชันที่ซับซ้อน แต่มีประสิทธิภาพสูงคือคุณสามารถบันทึกสิ่งที่มีชีวิตอยู่ได้ตลอดเวลา โดยทั่วไปฉันเป็นแฟนของรหัสการจัดทำเอกสารด้วยตนเอง แต่ฉันก็เป็นแฟนของซอฟต์แวร์ที่ตอบสนองในเวลาที่ทำให้ฉันรู้สึกว่ามันไม่ทำให้ฉันช้าลง หากคุณไปกับโซลูชันที่ซับซ้อน แต่มีประสิทธิภาพสูงให้พิจารณาสิ่งที่คุณสามารถทำได้เพื่อให้ไม่เลว:

ห่อมันไว้ในส่วนต่อประสานใส่มันในชุดประกอบด้วยตัวมันเองหรืออาจเป็นกระบวนการทั้งหมดที่เป็นของตัวเอง ทำให้มันเป็นคู่หลวมเป็นไปได้ด้วยหนาผนังนามธรรมรอบ ๆ มันเป็นไปได้ที่จะหลีกเลี่ยงการรั่วไหล เขียนการทดสอบหน่วยจำนวนมากเพื่อบันทึกการถดถอยในอนาคต

จัดทำเอกสารในรหัสแม้แต่พิจารณาการเขียนเอกสารจริง คิดเกี่ยวกับโครงสร้างข้อมูลที่ซับซ้อนและวิธีการจัดทำเอกสารลองนึกภาพพยายามทำความเข้าใจการใช้งานหนึ่งในนั้นจากรหัสโดยไม่มีโครงสร้างข้อมูลในหนังสือ / บทความวิกิพีเดียเพื่ออธิบาย และถึงกระนั้นเราก็ยอมรับว่าโครงสร้างข้อมูลที่ซับซ้อนเหล่านี้เป็นสิ่งที่ดีจริง ๆ และเป็นประโยชน์ที่ใครบางคนนำไปใช้ในภาษาของเรา

โปรดจำไว้ว่าเราทุกคนกำลังส่งข้อความบนสแต็ก TCP / IP ที่น่าจะเป็นแฮร์รี่เป็นรหัสได้ถ้าพวกเราคนใดคนหนึ่งมองมันชัดแจ้งเพื่อให้มันดำเนินการตามที่เราต้องการ บางทีปัญหาของคุณไม่ต้องการการเพิ่มประสิทธิภาพในระดับนี้อาจทำได้ แต่ระวังเมื่อต้องจัดการคำถามนี้เนื่องจากเราต้องทำครั้งคราว: มีมังกรอยู่ที่นั่น


0

ฉันมาที่การทำงานนี้ในพื้นที่ที่ไม่มี SLA ประสิทธิภาพ เมื่อพูดถึงตัวเรนเดอร์ออฟไลน์ในกราฟิกคอมพิวเตอร์ไม่มีผู้ใช้ "ประสิทธิภาพที่น่าพอใจ" เนื่องจากพวกเขาใช้เงินจำนวนมหาศาลเพื่อแจกจ่ายการคำนวณข้ามกลุ่มเมฆ เพื่อส่งออกภาพและเฟรมคุณภาพการผลิตสำหรับภาพยนตร์เช่น

แต่ฉันต้องบอกว่าเป็นหนึ่งในการทำงานในโดเมนนี้มานานหลายปีว่าวิธีการใด ๆ ที่ลดการบำรุงรักษาอย่างมีนัยสำคัญในความโปรดปรานของประสิทธิภาพจริง ๆ แล้วทำงานกับความต้องการประสิทธิภาพที่เปลี่ยนแปลงตลอดเวลา เพราะถ้าคุณไม่สามารถรักษาโซลูชันของคุณได้อย่างมีประสิทธิภาพเป็นเวลาหลายปีเพราะสิ่งต่าง ๆ กำลังเปลี่ยนไปภายใต้การควบคุมของคุณ (ทั้งในแง่ของรหัสโดยรอบและสิ่งที่ผู้ใช้คาดหวัง ต้องการทดแทนขายส่ง

ฉันไม่เห็นจุดประสงค์ขั้นสูงสุดของโปรไฟล์เช่น VTune เพื่อให้โค้ดของฉันทำงานได้เร็วขึ้น คุณค่าสูงสุดของพวกเขาคือการทำให้แน่ใจว่าฉันจะไม่ลดประสิทธิภาพการทำงานของฉันเพื่อตอบสนองความต้องการด้านประสิทธิภาพที่เพิ่มขึ้นเรื่อย ๆ ถ้าฉันต้องใช้การเพิ่มประสิทธิภาพแบบไมโครบางขั้นตอนจริงๆแล้ว profiler บวกกับการใช้งานกับกรณีผู้ใช้จริง (และไม่ใช่กรณีทดสอบบางอย่างที่ฉันคิดว่าอาจจะสำคัญ) ทำให้แน่ใจว่าฉันใช้การค้นหาแบบหลีกเลี่ยงไม่ได้ การปรับให้เหมาะสมอย่างมีเหตุผลต่อฮอตสปอตอันดับต้น ๆ ที่ปรากฏขึ้นอย่างดีและการจัดทำเอกสารอย่างระมัดระวังเพราะฉันจะต้องทบทวนและบำรุงรักษาและปรับแต่งและเปลี่ยนแปลงพวกเขาในปีต่อ ๆ ไปหากโซลูชันนั้นยังคงทำงาน

และโดยเฉพาะอย่างยิ่งหากโซลูชันที่ปรับให้เหมาะสมของคุณเกี่ยวข้องกับการมีเพศสัมพันธ์มากกว่าฉันจะลังเลที่จะใช้มัน ในบรรดาตัวชี้วัดที่มีค่าที่สุดที่ฉันได้ชื่นชมในส่วนที่สำคัญที่สุดในการทำงานของ codebase คือ decoupling (เช่นเดียวกับการลดจำนวนข้อมูลที่สิ่งที่จำเป็นต้องใช้ในการทำงานซึ่งลดความน่าจะเป็นที่จะต้องเปลี่ยนแปลงเช่นเดียวกัน ) เนื่องจากพื้นที่สำคัญเหล่านั้นมีเหตุผลหลายอย่างที่ทำให้สิ่งต่าง ๆ เปลี่ยนแปลง ซึ่งหมายความว่าข้อมูลที่น้อยกว่าสิ่งที่ต้องใช้ในการทำงานเหตุผลที่น้อยกว่าสำหรับการเปลี่ยนแปลงและการลดสาเหตุของการเปลี่ยนแปลงเป็นส่วนใหญ่ของการปรับปรุงประสิทธิภาพการผลิตในพื้นที่เฉพาะของฉันเพราะสิ่งต่าง ๆ จะต้องเปลี่ยนแปลงอยู่ตลอดเวลา (เรา จะล้าสมัยในอีกหนึ่งปี)

สำหรับฉันทางออกที่ดีที่สุดและมีประสิทธิภาพที่สุดที่ฉันพบคือสิ่งที่ประสิทธิภาพและการบำรุงรักษาและผลผลิตไม่ได้ขัดกัน การแสวงหาสำหรับฉันคือการพยายามทำให้แนวคิดเหล่านี้กลมกลืนเป็นหนึ่งสามารถทำได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.