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

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

2
การนอนด้ายทำงานอย่างไร
เมื่อคุณนอนหลับสิ่งที่เกิดขึ้นจริงคืออะไร? ผมเห็นว่าการนอนหลับหัวข้อ"หยุดเธรดปัจจุบันเป็นระยะเวลาที่กำหนดของเวลา" แต่มันทำงานอย่างไร ตามที่Thread.sleep () ทำงานภายในและThread.sleep ทำงานอย่างไรจริง ๆ : ระยะเวลาสลีปจะขึ้นอยู่กับความละเอียดเฉพาะของระบบ การนอนหลับกำลังปิดกั้น เธรดออกจาก CPU และหยุดการทำงาน เธรดไม่ใช้เวลา CPU ในขณะหลับ ฉันไม่เข้าใจกลไกภายในและพื้นฐานของความหมายทั้งหมดนี้ ฉันเข้าใจว่ามีบางสิ่งที่เรียกว่าตัวกำหนดตารางเวลาที่รับผิดชอบในการสลับระหว่างเธรด ดูเหมือนแหล่งที่มาจะบ่งบอกว่าสิ่งนี้จะแตกต่างกันไปตามระบบปฏิบัติการ (หรือฮาร์ดแวร์?) และเธรดส่วนใหญ่จะได้รับ 1ms - 60ms หรือมากกว่านั้นเพื่อดำเนินการบางอย่างก่อนที่ CPU จะเปลี่ยนไปใช้เธรดอื่น แต่เมื่อเธรดหลับ (เช่นหลายวินาที) มันจะทำงานต่อได้อย่างไร? ฉันคาดเดาว่าตัวจับเวลามีส่วนเกี่ยวข้องอย่างใดอย่างหนึ่งมันเป็นนาฬิกาของเมนบอร์ดหรือไม่ มันเกี่ยวข้องกับอัตราสัญญาณนาฬิกาของ CPU หรือไม่ และแม้ว่าจะมีการจับเวลาก็ตามซีพียูรู้ได้อย่างไรว่าถึงเวลาที่ต้องใส่ใจกับเธรดอีกครั้ง มันจะไม่ต้องตรวจสอบในด้ายอย่างต่อเนื่องเพื่อดูว่ามันพร้อมหรือไม่ ไม่ได้ที่มีประสิทธิภาพการลงคะแนนเลือกตั้งและดังนั้นจึงชนิดของการจะใช้เวลานาน CPU? กำลังนอนหลับภาษาเฉพาะของเธรดหรือระบบปฏิบัติการรับผิดชอบหรือไม่หรือเป็นสิ่งที่จำเพาะกับ CPU ใครช่วยอธิบายสิ่งนี้ให้ฉันด้วยคำอธิบายพื้นฐานของสิ่งต่าง ๆ เช่นตัวกำหนดตารางเวลาและซีพียูกำลังทำอะไรอยู่ในระหว่างนี้?

3
ฉันควรส่งคืนการตอบสนอง 204 หรือ 404 เมื่อไม่พบทรัพยากรหรือไม่
ฉันกำลังพัฒนาบริการ RESTful ที่เรียบง่ายสำหรับทัวร์นาเมนต์และกำหนดเวลา เมื่อมีการสร้างทัวร์นาเมนต์ผ่านคำขอ POST ที่มีเนื้อความ JSON การแข่งขันจะถูกแทรกใน a BiMapประกาศดังต่อไปนี้ในการนำ DAO ไปใช้: private BiMap<String, Tournament> tournaments = Maps.synchronizedBiMap(HashBiMap.create()); เมื่อมีการสร้างทัวร์นาเมนต์ id ของสตริงที่เกี่ยวข้องจะถูกส่งคืนเพื่อให้ผู้ใช้สามารถมีการอ้างอิงในอนาคตของทัวร์นาเมนต์นั้น เขา / เธอสามารถรับข้อมูลคืนจากทัวร์นาเมนต์ใหม่ที่ทำตามคำขอต่อไปนี้: GET http://localhost:8080/eventscheduler/c15268ce-474a-49bd-a623-b0b865386f39 แต่ถ้าหากไม่พบการแข่งขันที่มีรหัสดังกล่าวล่ะ จนถึงตอนนี้ฉันกำลังตอบกลับ 204 ข้อ นิวเจอร์ซีย์กำลังทำเพื่อฉันเมื่อกลับมาnullจากหนึ่งในวิธีการของมัน นี่คือวิธีการที่สอดคล้องกับเส้นทางด้านบน: @Path("/{id}") @GET @Produces(MediaType.APPLICATION_JSON) public Tournament getTournament(@PathParam("id") String id) { Optional<Tournament> optTournament = tournamentDao.getTournament(id); if (optTournament.isPresent()) return optTournament.get(); return …
15 java  rest  web-services  http 

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

2
จะทำการทดสอบที่ล้มเหลวได้ที่ไหน
ฉันเพิ่งเปลี่ยนการตั้งค่าสาขาในที่เก็บ GitHub ของฉันดังนั้นสาขา [ถัดไป] ของฉันต้องผ่านการสร้าง CI ผ่านคำขอดึง การสนทนาตามด้วยสมาชิกในทีมจำนวนหนึ่งเกี่ยวกับการทดสอบที่ล้มเหลว เพื่อบริบทของ ... ที่เก็บมีสาขา [master] ที่มีการประชาสัมพันธ์เพียงอย่างเดียวเมื่อมีการเปิดตัวดังนั้น [master] มีรหัสณวันที่ออกล่าสุดโดยไม่คำนึงว่าสาขาใหญ่ผู้เยาว์โปรแกรมแก้ไขด่วนเบต้าหรือ alpha / รุ่นก่อนวางจำหน่าย สาขา [ถัดไป] เป็นสาขา "ค่าเริ่มต้น" โดยที่เราต้องการเก็บรหัส "พร้อมใช้" ในทางเทคนิคสาขานั้นสามารถประชาสัมพันธ์ให้เป็น [master] ได้ตลอดเวลาและได้รับการปล่อยตัว ส้อมแต่ละคนมีกิ่ง dev ของตัวเองและผู้สนับสนุน PR ถึง [ถัดไป] เมื่อฉันตรวจทาน PR ที่ไม่สำคัญฉันจะรวมสาขา dev ของผู้มีส่วนร่วมในสาขา "review" ของฉันและถ้าฉันเห็นสิ่งที่ฉันสามารถแก้ไขได้อย่างรวดเร็วฉันจะยอมรับ / ผลักดันการเปลี่ยนแปลงและการทดสอบใหม่ (บางครั้งล้มเหลว) และ PR กลับไปที่สาขานักพัฒนาของผู้มีส่วนร่วม; เมื่อพวกเขารวมการเปลี่ยนแปลงของฉันทำการทดสอบความล้มเหลวใหม่ผ่านแล้วผลัก PR ของพวกเขาประสานและจากนั้นฉันจะรวมการประชาสัมพันธ์เป็น [ถัดไป] …

4
Windows Installers สำหรับแอปพลิเคชันธุรกิจภายในเหมาะสมหรือไม่
ฉันกำลังพยายามสร้างความเข้าใจโดยทั่วไปสำหรับสิ่งที่พบได้ทั่วไปในสถานการณ์นี้เพื่อให้ฉันสามารถตัดสินใจได้ว่ามันจะเหมาะสมหรือไม่ที่จะดำเนินการต่อไป โปรแกรมติดตั้งยินดีต้อนรับในสภาพแวดล้อมขององค์กรทั่วไปด้วยสิ่งต่อไปนี้หรือไม่? เปลี่ยนกระบวนการควบคุม สภาพแวดล้อม Dev / QA / การผลิต กำหนดทีมปรับใช้สำหรับพื้นที่ต่าง ๆ (ไฟร์วอลล์ฐานข้อมูล windows ฯลฯ ) มี "การทดสอบสารสีน้ำเงิน" ที่สามารถนำไปใช้กับแอปพลิเคชันเพื่อดูว่ามันเป็นตัวเลือกที่ดีสำหรับการสร้างตัวติดตั้งหรือไม่? * * * * โปรแกรมติดตั้งนั้นง่ายพอที่ทุกแอปพลิเคชั่นควรมีหรือไม่ ตัวติดตั้งเป็นเครื่องมือที่ใช่หรือไม่? มันสมเหตุสมผลหรือไม่ที่นักพัฒนาคาดว่าจะเรียนรู้บางอย่างเช่น WiX เพื่อสนับสนุนตัวติดตั้ง? การบำรุงรักษาโดยทั่วไปเป็นเรื่องที่ต้องคำนึงถึงนั่นคือการสร้างโปรแกรมติดตั้งให้เป็นทักษะเฉพาะหรือไม่? * * * * ตัวอย่างเช่นฉันมีชุดของแอปพลิเคชัน winform ที่อยู่ในไดเรกทอรีที่ใช้ร่วมกันบนเซิร์ฟเวอร์ที่ใช้งานจริง กลุ่มเฉพาะสามารถเรียกใช้แอปพลิเคชันจากไดเรกทอรีนี้ แต่ผู้ดูแลระบบเท่านั้นที่สามารถแก้ไขไฟล์ปฏิบัติการได้ กระบวนการปรับใช้ปัจจุบันเกี่ยวข้องกับการมีผู้ดูแลระบบคัดลอก / วางไฟล์ปฏิบัติการและไลบรารีไปยังไดเรกทอรีที่ใช้ร่วมกัน เนื่องจากไม่ได้ติดตั้งแอปพลิเคชั่นในเครื่องของผู้ใช้แต่ละคนคุณควรสร้างตัวติดตั้งสำหรับการปรับใช้แอปพลิเคชันรุ่นใหม่เหล่านี้ไปยังไดเรกทอรีที่ใช้ร่วมกันหรือไม่ Edit-- ฉันรู้สึกว่าคำตอบที่นี่ให้คำแนะนำที่มั่นคงดังนั้นฉันต้องการแบ่งปันสิ่งที่ฉันเกิดขึ้นสำหรับโครงการปัจจุบันของฉันที่ฉันต้องการสร้างแอปพลิเคชั่นจำนวนมากและปรับใช้กับโฟลเดอร์แต่ละโฟลเดอร์ ฉันพบแพ็คเกจ NuGet ชื่อ_PublishedApplicationsซึ่งเลียนแบบพฤติกรรมของ _PublishedWebsites สำหรับโครงการเว็บ แนวคิดคือคุณติดตั้งแพ็กเกจ NuGet …

3
ค่า Sentinel Unicode ที่ฉันสามารถใช้ได้
ฉัน desiging รูปแบบไฟล์และต้องการทำถูกต้อง เนื่องจากเป็นรูปแบบไบนารีดังนั้นไบต์แรก (หรือไบต์) ของไฟล์จึงไม่ควรมีรูปแบบข้อความที่ถูกต้อง (เช่นเดียวกับในส่วนหัวของไฟล์ PNG 1 ) วิธีนี้ช่วยให้เครื่องมือที่ไม่รู้จักรูปแบบยังคงเห็นว่าไม่ใช่ไฟล์ข้อความโดยดูที่สองสามไบต์แรก codepoint ด้านบนใด ๆ0x7Fนั้นไม่ถูกต้อง US-ASCII ดังนั้นจึงเป็นเรื่องง่าย แต่สำหรับ Unicode มันเป็นเรื่องที่แตกต่างกันโดยสิ้นเชิง นอกเหนือจากตัวอักษร Unicode ที่ถูกต้องมีตัวอักษรส่วนตัวการใช้งาน , noncharactersและยามรักษาการณ์ที่ผมพบในUnicode เอกชนใช้ตัวอักษร, Noncharacters และยามรักษาการณ์คำถามที่พบบ่อย อะไรคือลำดับของ Sentinel ของไบต์ที่ฉันสามารถใช้เมื่อเริ่มต้นไฟล์ซึ่งจะทำให้ US-ASCII, UTF-8, UTF-16LE และ UTF-16BE ที่ไม่ถูกต้อง เห็นได้ชัดว่าไบต์แรกไม่สามารถมีค่าด้านล่างได้0x80เนื่องจากจะเป็นอักขระ US-ASCII (ตัวควบคุม) ที่ถูกต้องดังนั้นจึง0x00ไม่สามารถใช้งานได้ นอกจากนี้เนื่องจากอักขระที่ใช้งานส่วนตัวเป็นอักขระ Unicode ที่ถูกต้องฉันจึงไม่สามารถใช้ codepoints เหล่านั้นได้เช่นกัน เนื่องจากมันจะต้องทำงานกับทั้ง UTF-16 และend -little-endian, noncharacterเช่น0xFFFEนั้นเป็นไปไม่ได้เนื่องจาก …
14 unicode 

8
ทำไม C ++ ถึงเขียนคอมไพเลอร์?
ฉันสงสัยว่าทำไม C ++ จึงเป็นตัวเลือกที่ดีในการเขียนคอมไพเลอร์ แน่นอนว่า C ก็ดีสำหรับจุดประสงค์นี้ด้วยเช่นกันเพราะคอมไพเลอร์ส่วนใหญ่เขียนใน C หรือ C ++ แต่ฉันสนใจ C ++ มากกว่าในเวลานี้ มีเหตุผลที่ดีไหม? ฉันกำลังหาสิ่งนั้นในอินเทอร์เน็ต แต่ฉันไม่สามารถหาเหตุผลที่ดีได้
14 c++  compiler 

8
คุณเขียนโค้ดไม่ดีเมื่ออยู่ภายใต้แรงกดดันหรือไม่? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน7 ปีที่ผ่านมา เมื่อคุณอยู่ภายใต้ความกดดันกำหนดเวลาใกล้เข้ามาและผู้จัดการกำลังหายใจคอของคุณคุณคิดว่าตัวเองเริ่มเขียนโค้ดไม่ดีหรือไม่? TDD และแนวปฏิบัติที่ดีที่สุดจะถูกส่งไปตามทางเพื่อที่จะทำสิ่งต่างๆให้สำเร็จหรือไม่? คุณทำอะไรในสถานการณ์เช่นนั้น คุณมีประสบการณ์อย่างไร
14 bad-code 

7
เป็นความคิดที่ไม่ดีหรือไม่ที่ทำให้วิธีการเรียนที่ผ่านการเรียนตัวแปรหรือไม่
นี่คือสิ่งที่ฉันหมายถึง: class MyClass { int arr1[100]; int arr2[100]; int len = 100; void add(int* x1, int* x2, int size) { for (int i = 0; i < size; i++) { x1[i] += x2[i]; } } }; int main() { MyClass myInstance; // Fill the arrays... myInstance.add(myInstance.arr1, myInstance.arr2, myInstance.len); } addสามารถเข้าถึงตัวแปรทั้งหมดที่ต้องการได้แล้วเนื่องจากเป็นวิธีการเรียนดังนั้นนี่เป็นความคิดที่ไม่ดีหรือไม่? …

3
วิธีส่งผลกระทบต่อลำดับความสำคัญของข้อบกพร่องให้กับนักพัฒนาและปฏิบัติต่อพวกเขาอย่างไร
เรามีกระบวนการบั๊กที่ใช้งานอยู่ในปัจจุบัน เรามีบั๊ก 3 ระดับ: ข้อผิดพลาด P1: ข้อบกพร่องที่ทำให้ผู้ใช้ไม่สามารถทำงานได้ พวกเขาจะต้องแก้ไขทันที ข้อผิดพลาด P2: ข้อบกพร่องที่ส่งผลกระทบ แต่ผู้ใช้สามารถทำงานได้ ข้อผิดพลาด P3: ข้อบกพร่องที่ไม่ส่งผลกระทบและผู้ใช้สามารถทำงานได้ P1 เป็นข้อบังคับและต้องได้รับการจัดการทันที แต่สำหรับ P2 และ P3 เราจะตัดสินเป็นกรณีไป ด้วย 3 ระดับที่เรามีทีมมีแนวโน้มที่จะทำงานในการพัฒนาที่เร่งรีบมากกว่าที่ลูกค้าถามแทนการติดต่อกับ P2 และ P3 ซึ่งเกือบจะไม่เร่งด่วน คำถามดังต่อไปนี้: ฉันควรเพิ่มระดับความสำคัญอีกระดับเช่นมี P4 หรือไม่ ฉันควรกำหนดเป้าหมายให้พวกเขาสำหรับจัดการกับตั๋วที่ไม่เร่งด่วนเหมือนในสัปดาห์นี้หรือไม่เมื่อไม่ได้มอบหมายงานการเขียนโค้ดคุณควรปฏิบัติต่ออย่างน้อย 1 P2 หรือไม่ ขณะนี้เราไม่มีวัตถุประสงค์อย่างที่ฉันกล่าวไว้ข้างต้น แต่ข้อกังวลของฉันคือการให้วัตถุประสงค์ดังกล่าวเป็นเรื่องที่โหดร้าย สิ่งที่แน่นอนคือฉันต้องพูดคุยกับพวกเขาเกี่ยวกับวัตถุประสงค์ทีมต้องการมีส่วนร่วมในการอภิปรายโดยเฉพาะอย่างยิ่งเมื่อเรากำหนดวัตถุประสงค์ ปรับปรุง: ฉันถูกเสนอคำถามนี้ในแง่ของความคล้ายคลึงกัน อย่างไรก็ตามมันไม่เหมือนกันเลย คำถามของฉันคือทำอย่างไรถึงจะมีคนจัดการกับข้อผิดพลาดโดยไม่มีการกำหนดวาระที่เข้มงวดและยังไม่ได้รับการแก้ไข ดังนั้นไม่คำถามที่บอกเป็นนัย ๆ ไม่ได้ช่วยฉัน ยังขอบคุณ

4
ฉันจะค้นหาสถานที่สำคัญทั้งหมดภายในขอบเขตของสถานที่สำคัญได้อย่างมีประสิทธิภาพได้อย่างไร
ฉันกำลังพยายามเริ่มต้นด้วยโครงการค้นหาทางภูมิศาสตร์ที่จะพบสถานที่สำคัญทั้งหมดในระยะ 10 กม. / ไมล์ (ไม่สำคัญสำหรับเรื่องนี้) ของจุดสังเกตเฉพาะ ตัวอย่างเช่นสมมุติว่าฉันมีฐานข้อมูลของสถานที่สำคัญ 1,000,000 แห่ง เพื่อหาจุดสังเกตทั้งหมดในช่วง 10 ไมล์ของจุดสังเกตที่มีพิกัดบางอย่างฉันจะต้องคำนวณระยะทางระหว่างจุดสังเกตจากการค้นหาของฉันกับจุดสังเกต 1,000,000 จุด มีวิธีที่ดีกว่าในการทำเช่นนั้น? ทางเลือกที่ฉันคิดคือจัดหมวดหมู่สถานที่สำคัญเช่นประเทศภูมิภาคเมืองย่านธุรกิจประวัติศาสตร์ ฯลฯ ในลักษณะที่ธุรกิจสามารถเป็นส่วนหนึ่งของพื้นที่ใกล้เคียงหรือเมือง เมืองเป็นส่วนหนึ่งของภูมิภาคประเทศ ฯลฯ สิ่งนี้สามารถทำให้รายการการคำนวณแคบลง แต่มันก็ดูเหมือนว่าจะมีหลายงานที่ต้องทำเพื่อให้การค้นหารวดเร็วและแม่นยำ Google Maps API ช่วยได้ไหม

5
วิธีจัดการกับการวางแผนวิ่งระยะยาวเกินไป
ฉันใช้เวลาวางแผนมากกว่า 5 ชั่วโมงในการวิ่งเป็นเวลาหนึ่งสัปดาห์ ดูเหมือนว่าจะมากเกินไป เราพูดคุยรายละเอียดต่าง ๆ ในการวางแผนวิ่งเนื่องจากสมาชิกส่วนใหญ่ไม่อาวุโส หากเราไม่ทำเช่นนั้นจะนำไปสู่ข้อผิดพลาดระหว่างการใช้งานและการออกแบบใหม่ในระหว่างการวิ่ง เราจะจัดการกับสิ่งนี้ได้อย่างไร ฉันควรพูดคุยรายละเอียดมากน้อยเพียงใดระหว่างการวางแผนเพื่อให้พอดีกับความยาวเพียง 2 ชั่วโมงต่อสัปดาห์
14 agile  scrum  planning  sprint 

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

6
Clean Code - ฉันควรเปลี่ยน 1 ตัวอักษรเป็นค่าคงที่หรือไม่
เพื่อหลีกเลี่ยงตัวเลขเวทย์มนตร์เรามักได้ยินว่าเราควรให้ชื่อที่มีความหมายตามตัวอักษร เช่น: //THIS CODE COMES FROM THE CLEAN CODE BOOK for (int j = 0; j < 34; j++) { s += (t[j] * 4) / 5; } -------------------- Change to -------------------- int realDaysPerIdealDay = 4; const int WORK_DAYS_PER_WEEK = 5; int sum = 0; for (int j = 0; …

5
เป็นไปได้ไหมที่จะใช้ DRY โดยไม่ต้องมีเพศสัมพันธ์เพิ่มขึ้น?
สมมติว่าเรามีโมดูลซอฟต์แวร์ A ที่ใช้ฟังก์ชั่น F. โมดูล B อื่นใช้ฟังก์ชั่นเดียวกับ F ' มีหลายวิธีในการกำจัดรหัสที่ซ้ำกัน: ให้ใช้ F 'จาก B ให้ B ใช้ F จาก A ใส่ F ลงในโมดูล C ของตัวเองและปล่อยให้ทั้ง A และ B ใช้งาน ตัวเลือกเหล่านี้ทั้งหมดสร้างการพึ่งพาเพิ่มเติมระหว่างโมดูล พวกเขาใช้หลักการ DRY ที่ค่าใช้จ่ายของการมีเพศสัมพันธ์ที่เพิ่มขึ้น เท่าที่ฉันเห็นการมีเพศสัมพันธ์จะเพิ่มขึ้นเสมอหรือเมื่อถูกเช่าไปในระดับที่สูงขึ้นเมื่อใช้ DRY ดูเหมือนจะมีข้อขัดแย้งระหว่างหลักการพื้นฐานสองข้อที่สำคัญที่สุดของการออกแบบซอฟต์แวร์ (ที่จริงแล้วฉันไม่คิดว่ามันน่าแปลกใจที่มีความขัดแย้งเช่นนั้นนี่อาจเป็นสิ่งที่ทำให้การออกแบบซอฟต์แวร์ที่ดีเป็นเรื่องยากมากฉันรู้สึกประหลาดใจที่โดยทั่วไปแล้วความขัดแย้งเหล่านี้ไม่ได้ระบุไว้ในตำราเบื้องต้น) แก้ไข (เพื่อความกระจ่าง): ฉันคิดว่าความเท่าเทียมกันของ F และ F 'ไม่ใช่แค่เรื่องบังเอิญ หาก F ต้องได้รับการแก้ไข F 'จะต้องได้รับการแก้ไขในลักษณะเดียวกัน

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