วิศวกรรมซอฟต์แวร์

ถาม - ตอบสำหรับมืออาชีพนักวิชาการและนักเรียนที่ทำงานในวงจรการพัฒนาระบบ

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

10
แฮ็คคอมไพเลอร์ของ Ken Thompson ยังคงเป็นภัยคุกคามหรือไม่?
แฮ็คทอม ธ อมป์สัน (1984) Ken Thompson ได้สรุปวิธีการที่จะคอมไพล์ไบนารีคอมไพเลอร์ (และซอฟต์แวร์ที่คอมไพล์อื่น ๆ เช่นสคริปต์การเข้าสู่ระบบในระบบ * nix) ในปี 1984 ฉันอยากรู้ว่าการคอมไพล์สมัยใหม่ได้แก้ไขข้อบกพร่องด้านความปลอดภัยนี้หรือไม่ คำอธิบายสั้น: เขียนรหัสคอมไพเลอร์ใหม่เพื่อให้มีข้อบกพร่อง 2 ข้อ: เมื่อรวบรวมไบนารีของตัวเองคอมไพเลอร์จะต้องรวบรวมข้อบกพร่องเหล่านี้ เมื่อรวบรวมรหัสที่เลือกล่วงหน้าอื่น ๆ (ฟังก์ชั่นเข้าสู่ระบบ) จะต้องรวบรวมลับๆโดยพลการ ดังนั้นคอมไพเลอร์ก็ทำงานได้ตามปกติ - เมื่อคอมไพล์สคริปต์ล็อกอินหรือคล้ายกันมันสามารถสร้างแบ็คดอร์ความปลอดภัยและเมื่อคอมไพล์เวอร์ชั่นใหม่ของตัวเองในอนาคตมันจะเก็บข้อบกพร่องก่อนหน้า - และข้อบกพร่องจะมีอยู่ในคอมไพเลอร์เท่านั้น ไบนารีดังนั้นจึงเป็นเรื่องยากมากที่จะตรวจจับ คำถาม: ฉันไม่สามารถหาคำตอบสำหรับสิ่งเหล่านี้บนเว็บ: สิ่งนี้เกี่ยวข้องกับการรวบรวมแบบทันเวลาได้อย่างไร ฟังก์ชั่นเหมือนกับการเข้าสู่ระบบการจัดการโปรแกรมบนระบบ * nix ถูกคอมไพล์เมื่อรันหรือไม่? สิ่งนี้ยังคงเป็นภัยคุกคามที่ถูกต้องหรือมีการพัฒนาด้านความปลอดภัยในการรวบรวมตั้งแต่ปี 1984 ที่ป้องกันไม่ให้เกิดปัญหาร้ายแรง สิ่งนี้มีผลกระทบต่อทุกภาษาหรือไม่ ทำไมฉันถึงอยากรู้? ฉันเจอสิ่งนี้ขณะทำการบ้านและมันก็น่าสนใจ แต่ฉันก็ขาดภูมิหลังที่จะเข้าใจอย่างเป็นรูปธรรมไม่ว่าจะเป็นปัญหาปัจจุบันหรือปัญหาที่แก้ไขแล้ว วัสดุอ้างอิง ภาพรวม บางรหัส
156 linux  unix  compiler  hacking 

13
หากทีมของฉันมีทักษะต่ำฉันควรลดความสามารถของรหัสของฉันลงหรือไม่ [ปิด]
ตัวอย่างเช่นมีตัวอย่างทั่วไปใน JS เพื่อรับค่าเริ่มต้น: function f(x) { x = x || 'default_value'; } ข้อมูลโค้ดประเภทนี้ไม่สามารถเข้าใจได้ง่ายโดยสมาชิกทุกคนในทีมของฉันระดับ JS ของพวกเขาต่ำ ฉันไม่ควรใช้เคล็ดลับนี้หรือไม่? มันทำให้โค้ดอ่านน้อยลงโดยเพียร์ แต่อ่านได้มากกว่าต่อไปนี้ตาม JS dev ใด ๆ : function f(x) { if (!x) { x = 'default_value'; } } แน่นอนว่าถ้าฉันใช้เคล็ดลับนี้และเพื่อนร่วมงานเห็นมันพวกเขาก็สามารถเรียนรู้บางสิ่งได้ แต่บ่อยครั้งที่พวกเขาเห็นสิ่งนี้ว่า "พยายามฉลาด" ดังนั้นฉันควรลดระดับรหัสของฉันหรือไม่หากเพื่อนร่วมทีมของฉันมีระดับต่ำกว่าฉัน

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

5
Scheme vs Common Lisp: คุณลักษณะใดที่ทำให้โครงการของคุณแตกต่าง? [ปิด]
ไม่มีปัญหาการขาดแคลนคำถาม "Scheme vs Common Lisp" ที่คลุมเครือทั้งใน StackOverflow และบนเว็บไซต์นี้ดังนั้นฉันต้องการทำให้สิ่งนี้มีความสำคัญยิ่งขึ้น คำถามสำหรับคนที่มีรหัสในทั้งสองภาษา: ในขณะที่การเขียนโค้ดใน Scheme องค์ประกอบเฉพาะของประสบการณ์การเขียนโปรแกรม Lisp แบบใดที่คุณพลาดมากที่สุด หรือในทางกลับกันในขณะที่เข้ารหัสใน Common LISP คุณพลาดอะไรไปจากการเข้ารหัสใน Scheme ฉันไม่ได้หมายถึงคุณสมบัติทางภาษา ต่อไปนี้เป็นสิ่งที่ถูกต้องทั้งหมดที่ควรพลาดรวมถึงคำถามที่เกี่ยวข้อง: ห้องสมุดเฉพาะ คุณสมบัติเฉพาะของสภาพแวดล้อมการพัฒนาเช่น SLIME, DrRacket เป็นต้น คุณสมบัติของการใช้งานเฉพาะเช่นความสามารถของ Gambit ในการเขียนบล็อกของรหัส C ลงในที่มาของโครงการของคุณโดยตรง และแน่นอนคุณสมบัติด้านภาษา ตัวอย่างของคำตอบที่ฉันหวังไว้: "ฉันพยายามที่จะใช้ X ใน Common LISP และถ้าฉันมีความต่อเนื่องระดับเฟิร์สคลาสของ Scheme ฉันจะทำแค่ Y ทั้งหมด แต่แทนที่จะทำ Z ซึ่งมันเจ็บปวดมากกว่า" "การเขียนสคริปต์กระบวนการสร้างในโครงการ Scheme ของฉันเจ็บปวดขึ้นเรื่อย ๆ …
155 lisp  scheme 

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

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

11
งานของฉันเกี่ยวกับการทดสอบนักพัฒนาถูกนำมาใช้ประโยชน์หรือไม่? [ปิด]
ฉันกำลังมองหางานและได้สมัครงานหลายตำแหน่ง นายจ้างคนหนึ่งตอบ ฉันมีการสัมภาษณ์ทางโทรศัพท์ที่ค่อนข้างยาว (อาจจะเป็นชั่วโมง +) จากนั้นพวกเขาก็ทำการทดสอบนักพัฒนาซอฟต์แวร์ให้ฉัน ฉันได้รับแจ้งว่าการทดสอบนั้นใช้เวลาประมาณ 6 ถึง 8 ชั่วโมงและหากได้ผลลัพธ์ที่สอดคล้องกับการอนุมัติของพวกเขาฉันจะได้รับเงินสำหรับงานของฉัน ที่ให้ฉันหยุดชั่วคราว แต่ฉันพยายาม การทดสอบนักพัฒนาที่เกิดขึ้นบนVMเข้าถึงได้ผ่านทางRDP ภารกิจคือการนำหน้าการค้นหาในโครงการเว็บที่ขอข้อมูลจากเซิร์ฟเวอร์แสดงบนหน้าจอในตารางมีรูปแบบการกรองการค้นหาที่ค่อนข้างซับซ้อน (มีสถานะประมาณ 15 สถานะและเมื่อส่งการค้นหาไปยังเซิร์ฟเวอร์ของคุณ สามารถค้นหาตามสถานะเหล่านี้) นอกเหนือจากการค้นหาสตริง / ฟิลด์ นอกจากนี้พวกเขาต้องการไอคอนSVGเพื่อเปลี่ยนสีในค่าข้อมูลบางอย่างและข้อมูลบางอย่างจะแสดงแตกต่างจากโครงสร้างในฐานข้อมูล เรื่องเล่าของ Loooong ใช้เวลานานกว่า 6-8 ชั่วโมง ส่วนใหญ่เป็นเพราะ VM ที่แย่มาก ๆ ที่ฉันใช้งานอยู่ (Visual Studio 2013 ใช้เวลาโหลด 10 นาทีและอีก 15 นาทีเพื่อเปิดโซลูชัน ginormous 3 GB) ฉันได้รับแจ้งว่าหลังจากเสร็จสิ้นการทดสอบฉันควรจะยอมรับการเปลี่ยนแปลงการควบคุมแหล่งที่มา ... อืมโอเค ฉันทำตามคำแนะนำ และหลังจากยอมรับการเปลี่ยนแปลงฉันได้รับการตอบกลับทางอีเมล SVG …
154 interview 

15
ประโยชน์ของแกงกะหรี่คืออะไร?
ฉันเพิ่งเรียนรู้เกี่ยวกับการแกงและในขณะที่ฉันคิดว่าฉันเข้าใจแนวคิดฉันไม่เห็นประโยชน์ใหญ่หลวงใด ๆ ในการใช้มัน เป็นตัวอย่างเล็ก ๆ น้อย ๆ ฉันใช้ฟังก์ชั่นที่เพิ่มสองค่า (เขียนเป็น ML) รุ่นที่ไม่มีการปิดบังจะเป็น fun add(x, y) = x + y และจะเรียกว่าเป็น add(3, 5) ในขณะที่เวอร์ชันแกงกะหรี่คือ fun add x y = x + y (* short for val add = fn x => fn y=> x + y *) และจะเรียกว่าเป็น add 3 5 มันดูเหมือนว่าฉันจะเป็นเพียงน้ำตาล …

13
มันเป็นแค่ฉันหรือนี่เป็นคำถามสัมภาษณ์ที่ทำให้งงงวย? [ปิด]
พื้นหลัง ฉันถูกถามในการสัมภาษณ์ทางเทคนิคเพื่อเขียนอัลกอริทึมเพื่อสำรวจ "วัตถุ" (สังเกตเครื่องหมายคำพูด) โดยที่ A เท่ากับ B และ B เท่ากับ C และ A เท่ากับ C แค่นั้นแหละ. นั่นคือข้อมูลทั้งหมดที่ฉันได้รับ ฉันถามผู้สัมภาษณ์ว่าเป้าหมายคืออะไร แต่เห็นได้ชัดว่าไม่มีใครแค่ "ทราเวิร์ส" "วัตถุ" ฉันไม่รู้เกี่ยวกับคนอื่น แต่ดูเหมือนจะเป็นคำถามที่โง่สำหรับฉัน ฉันถามอีกครั้งว่า "ฉันกำลังค้นหาค่าอยู่หรือไม่" Nope เพียงแค่ "สำรวจ" มัน ทำไมฉันถึงต้องการที่จะวนลูปผ่าน "วัตถุ" นี้ไม่รู้จบ? เพื่อละลายโปรเซสเซอร์ของฉันอาจ? คำตอบตามที่ผู้สัมภาษณ์คือการที่ฉันควรจะได้เขียนฟังก์ชันเวียน ตกลงดังนั้นทำไมไม่เพียงแค่ขอให้ฉันเขียนฟังก์ชั่นวนซ้ำ? และใครจะเขียนฟังก์ชั่นวนซ้ำที่ไม่สิ้นสุด คำถามของฉัน: นี่เป็นคำถามที่ถูกต้องหรือไม่สำหรับคุณที่เหลือและถ้าเป็นเช่นนั้นคุณสามารถให้คำแนะนำเกี่ยวกับสิ่งที่ฉันอาจหายไปได้หรือไม่? บางทีฉันอาจจะคิดหนักเกินไปเกี่ยวกับการแก้ปัญหาในโลกแห่งความจริง ฉันเขียนโปรแกรมเรียบร้อยแล้วเป็นเวลานาน แต่กระบวนการสัมภาษณ์ทางเทคโนโลยีนี้ทำให้ฉันรู้สึกเหมือนไม่รู้อะไรเลย

11
ฉันจะหาโครงการโอเพ่นซอร์สที่ดีเพื่อเข้าร่วมได้อย่างไร [ปิด]
ฉันเพิ่งเริ่มทำงานเมื่อปีที่แล้วและฉันต้องการเข้าร่วมโครงการโอเพ่นซอร์สด้วยเหตุผลเดียวกันกับคนอื่น ๆ : ช่วยสร้างสิ่งที่มีประโยชน์และพัฒนาทักษะของฉันต่อไป ปัญหาของฉันคือฉันไม่ทราบวิธีการค้นหาโครงการที่ฉันเหมาะสม ฉันจะหาโครงการที่เป็นมิตรกับผู้เริ่มต้นได้อย่างไร ฉันควรค้นหาคุณลักษณะใด อะไรคือสัญญาณเตือนว่าโครงการอาจไม่เหมาะสม? มีเครื่องมือใดบ้างที่ช่วยจับคู่ผู้คนกับโครงการโอเพ่นซอร์ส มีคำถามที่คล้ายกันที่นี่แต่คำถามนั้นเกี่ยวกับการจ้างงานและ จำกัด อยู่ที่ PHP / Drupal

30
เป็นเรื่องผิดปกติสำหรับ บริษัท ขนาดเล็ก (นักพัฒนา 15 คน) ที่จะไม่ใช้การควบคุมแหล่งที่มา / รุ่นที่จัดการหรือไม่ [ปิด]
ไม่ใช่คำถามทางเทคนิค แต่มีคำถามอื่น ๆ อีกมากมายเกี่ยวกับการควบคุมแหล่งที่มาและแนวปฏิบัติที่ดีที่สุด บริษัท ที่ฉันทำงานด้วย (ซึ่งจะไม่เปิดเผยชื่อ) ใช้เครือข่ายแชร์เพื่อโฮสต์ซอร์สโค้ดและโค้ดที่นำออกใช้ เป็นความรับผิดชอบของนักพัฒนาหรือผู้จัดการในการย้ายซอร์สโค้ดไปยังโฟลเดอร์ที่ถูกต้องด้วยตนเองโดยขึ้นอยู่กับว่ามันเปิดตัวแล้วหรือยังและเป็นเวอร์ชั่นอะไร เรามีสเปรดชีตหลายจุดที่เราบันทึกชื่อไฟล์และเวอร์ชันและสิ่งที่เปลี่ยนแปลงไปและบางทีมก็ใส่รายละเอียดของเวอร์ชันต่าง ๆ ไว้ที่ด้านบนของแต่ละไฟล์ แต่ละทีม (2-3 ทีม) ดูเหมือนจะทำสิ่งนี้แตกต่างกันภายใน บริษัท อย่างที่คุณสามารถจินตนาการได้มันเป็นระเบียบที่จัดระเบียบเพราะ "คนที่ใช่" รู้ว่าสิ่งของของพวกเขาอยู่ที่ไหน แต่เป็นระเบียบเพราะมันแตกต่างกันไป ฉันพยายามผลักดันการควบคุมแหล่งที่มาที่มีการจัดการมาระยะหนึ่งแล้ว แต่ดูเหมือนว่าฉันจะไม่ได้รับการสนับสนุนเพียงพอภายใน บริษัท ข้อโต้แย้งหลักของฉันคือ: ปัจจุบันเรามีช่องโหว่; ณ จุดใด ๆ ที่ใครบางคนอาจลืมที่จะทำหนึ่งในหลาย ๆ การกระทำที่เราต้องทำซึ่งอาจหมายถึงการจัดเก็บทั้งเวอร์ชันไม่ถูกต้อง อาจต้องใช้เวลาหลายชั่วโมงหรือหลายวันกว่าจะแยกรุ่นกลับมารวมกันหากจำเป็น เรากำลังพัฒนาคุณสมบัติใหม่พร้อมกับการแก้ไขข้อบกพร่องและมักจะต้องชะลอการปล่อยของหนึ่งหรืออื่น ๆ เพราะงานบางอย่างยังไม่เสร็จสมบูรณ์ เราต้องบังคับให้ลูกค้าใช้เวอร์ชันที่มีคุณสมบัติใหม่แม้ว่าพวกเขาต้องการแก้ไขบั๊กเพราะมีเพียงเวอร์ชันเดียวเท่านั้นที่พวกเรากำลังทำงานอยู่ เรากำลังประสบปัญหากับ Visual Studio เนื่องจากผู้พัฒนาหลายรายกำลังใช้โครงการเดียวกันในเวลาเดียวกัน (ไม่ใช่ไฟล์เดียวกัน แต่ยังคงทำให้เกิดปัญหา) มีนักพัฒนาเพียง 15 คน แต่เราทำทุกอย่างแตกต่างกัน มันจะดีกว่าไหมถ้ามีแนวทางแบบมาตรฐานทั่ว บริษัท ที่เราทุกคนต้องปฏิบัติตาม …

7
ภาษาการเขียนโปรแกรม C ถือเป็นภาษาระดับต่ำเมื่อมันออกมาหรือไม่
ปัจจุบันCถือเป็นภาษาระดับต่ำแต่ในยุค 70 ถือว่าเป็นระดับต่ำหรือไม่ เป็นคำที่ใช้งานอยู่แล้ว? ภาษาระดับสูงที่ได้รับความนิยมจำนวนมากไม่ได้มีอยู่จนกระทั่งช่วงกลางยุค 80 และต่อไปดังนั้นฉันอยากรู้ว่าธรรมชาติระดับต่ำมีการเปลี่ยนแปลงอย่างไรในช่วงหลายปีที่ผ่านมา

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

6
หลักการและโครงสร้างของโซลิด
ในการสัมภาษณ์งานเมื่อเร็ว ๆ นี้ฉันไม่สามารถตอบคำถามเกี่ยวกับSOLID ได้นอกเหนือจากการให้ความหมายพื้นฐานของหลักการต่าง ๆ มันทำให้ฉันเป็นโรคจิตจริงๆ ฉันได้ขุดไปสองสามวันแล้วและยังไม่ได้ข้อสรุปที่น่าพอใจ คำถามสัมภาษณ์คือ: หากคุณกำลังดูโครงการ. Net ที่ฉันบอกคุณว่าปฏิบัติตามหลักการของ SOLID อย่างเคร่งครัดคุณคาดหวังอะไรในแง่ของโครงการและโครงสร้างโค้ด ฉันดิ้นรนนิดหน่อยไม่ตอบคำถามจริงๆแล้วก็ระเบิดออกมา ฉันจะจัดการคำถามนี้ได้ดีขึ้นได้อย่างไร
150 c#  .net  solid 

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