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

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

1
เหตุใดจึงต้องใช้เวลาหลายชั่วโมงในการถอดรหัสสัญญาณจาก Curiosity rover ผ่าน MRO
วิดีโอคลิปของนาซ่ากล่าวว่าข้อมูลจากCuriosity ที่ส่งโดยMars Reconnaissance Orbiter (MRO) จะถูกเก็บไว้สองสามชั่วโมงจากนั้นส่งไปยัง Earth (ดูเหมือนจะใช้เวลาประมาณ 14 นาที) หลังจากนั้นจะใช้เวลาหลายชั่วโมงกว่าวิศวกรจะถอดรหัส ข้อมูล. จากสิ่งที่ฉันได้อ่านดูเหมือนว่า MRO สามารถใช้เป็นอุปกรณ์สื่อสารสำรองสำหรับ Curiosity หากจำเป็น ในกรณีของการลงจอดของ Curiosityฉันคิดว่า MRO จะเก็บข้อมูลไว้จนกว่ามันจะโคจรรอบดาวเคราะห์สีแดงและมีแนวสายตาตรงกับโลกก่อนที่จะส่งสัญญาณ (จากนั้นฉันแค่เก็งกำไรที่นี่) เข้าใจ. แต่ทำไมต้องใช้เวลาวิศวกรนาซ่าในการถอดรหัสสัญญาณที่ถ่ายทอดโดย MRO หลังจากที่ได้รับบนโลกนี้ ( จุดโบนัส: ปกติจะใช้เวลาหลายชั่วโมงในการถอดรหัสสัญญาณ MRO หรือไม่ )

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

4
GPL ทำงานอย่างไรเกี่ยวกับภาษาเช่น Dart ที่รวบรวมเป็นภาษาอื่น ๆ ?
เว็บเบราเซอร์ไม่รองรับภาษา Dart ของ Google นอกเหนือจาก Chromium รุ่นพิเศษที่รู้จักกันในชื่อ Dartium ในการใช้ Dart สำหรับรหัสการผลิตคุณจะต้องเรียกใช้มันผ่านตัวรวบรวม / ตัวแปล / ตัวแปล JavaScript จากนั้นใช้ JavaScript เอาท์พุทในเว็บแอปพลิเคชันของคุณ เนื่องจาก JavaScript เป็นภาษาที่ตีความทุกคนที่ได้รับ "binary" (Aka ไฟล์. js) จึงได้รับซอร์สโค้ดด้วย ตอนนี้สัญญาอนุญาตสาธารณะทั่วไปของ GNU v3.0 ระบุว่า "" ซอร์สโค้ด "สำหรับงานหมายถึงรูปแบบที่ต้องการของงานเพื่อทำการแก้ไข" ซึ่งจะบอกเป็นนัยว่าจะต้องให้รหัส Dart ดั้งเดิมนอกเหนือจากรหัส JavaScript แก่ผู้ใช้ปลายทางด้วย นี่หมายความว่าแอปพลิเคชันเว็บใด ๆ ที่เขียนใน Dart จะต้องให้รหัส Dart ดั้งเดิมแก่ผู้เยี่ยมชมเว็บไซต์ของพวกเขาแม้ว่าสำเนาของซอร์สโค้ดนั้นจะมีให้ในรูปแบบที่มนุษย์อ่าน / เขียน / แก้ไขได้หรือไม่

3
เป็นการเริ่มต้นที่ดีกว่าการเตรียมแอตทริบิวต์ในชั้นเรียนหรือเพิ่มไปตามทาง?
ฉันขอโทษถ้านี่เป็นคำถามที่ซับซ้อนอย่างแน่นอน แต่ฉันอยากรู้ว่าแนวทางปฏิบัติที่ดีที่สุดออกไปที่นั่นและฉันดูเหมือนจะไม่พบคำตอบที่ดีใน Google ใน Python ฉันมักจะใช้คลาสที่ว่างเปล่าเป็นคอนเทนเนอร์โครงสร้างข้อมูล super-catchall (เรียงลำดับเหมือนไฟล์ JSON) และเพิ่มคุณสมบัติไปพร้อมกัน: class DataObj: "Catch-all data object" def __init__(self): pass def processData(inputs): data = DataObj() data.a = 1 data.b = "sym" data.c = [2,5,2,1] สิ่งนี้ทำให้ฉันมีความยืดหยุ่นอย่างมากเนื่องจากอ็อบเจกต์คอนเทนเนอร์สามารถเก็บอะไรก็ได้ ดังนั้นหากความต้องการใหม่เกิดขึ้นฉันจะเพิ่มมันเป็นคุณสมบัติอื่นไปยังวัตถุ DataObj (ซึ่งฉันผ่านไปรอบ ๆ ในรหัสของฉัน) อย่างไรก็ตามเมื่อเร็ว ๆ นี้ฉันรู้สึกประทับใจ (โดยโปรแกรมเมอร์ FP) ว่านี่เป็นการฝึกฝนที่แย่มากเพราะมันยากที่จะอ่านรหัส หนึ่งจะต้องผ่านรหัสทั้งหมดเพื่อคิดออกว่าคุณลักษณะ DataObj จริงมีอะไร คำถาม : ฉันจะเขียนสิ่งนี้ใหม่เพื่อการบำรุงรักษาที่มากขึ้นได้อย่างไรโดยไม่ลดความยืดหยุ่นลง? …

7
หลักฐานเชิงประจักษ์สำหรับการเลือกกระบวนทัศน์การเขียนโปรแกรมเพื่อแก้ไขปัญหา
วิกิ C2 มีการอภิปรายหลักฐานเชิงประจักษ์สำหรับการเขียนโปรแกรมเชิงวัตถุซึ่งโดยทั่วไปสรุปแล้วไม่มีใครเลยที่จะดึงดูดอำนาจ นี่ถูกแก้ไขครั้งสุดท้ายในปี 2551 การสนทนาที่นี่ดูเหมือนจะทนได้: คำถามว่า OO ล้าสมัยหรือไม่เมื่อการเขียนโปรแกรมเชิงปฏิบัติการเป็นตัวเลือกที่ไม่ดีและข้อดีและข้อเสียของ AOPล้วนได้รับการตอบรับความคิดเห็นของผู้มีส่วนร่วม แน่นอนว่าความคิดเห็นของผู้ปฏิบัติงานที่จัดตั้งขึ้นและมีชื่อเสียงนั้นเป็นสิ่งที่น่ายินดีและมีคุณค่า แต่ก็มีความเป็นไปได้มากขึ้นเมื่อพวกเขาสอดคล้องกับข้อมูลการทดลอง หลักฐานนี้มีอยู่หรือไม่? ฉันรู้ว่าวิศวกรรมซอฟต์แวร์ที่ใช้หลักฐานเป็นสิ่งหนึ่ง แต่ฉันสามารถฝึกฝนในบริบทนี้ได้หรือไม่ โดยเฉพาะถ้าฉันมีปัญหาเฉพาะPที่ฉันต้องการแก้ไขโดยการเขียนซอฟต์แวร์มีองค์ความรู้การศึกษาและการวิจัยที่จะให้ฉันดูว่าผลลัพธ์ของการแก้ปัญหาเช่นPนั้นขึ้นอยู่กับการเลือกกระบวนทัศน์การเขียนโปรแกรมหรือไม่? ฉันรู้ว่ากระบวนทัศน์ใดที่ออกมาเป็น "คำตอบที่ถูกต้อง" ขึ้นอยู่กับว่าการวัดใดที่การศึกษาหนึ่ง ๆ ให้ความสนใจโดยขึ้นอยู่กับเงื่อนไขที่การศึกษานั้นคงที่หรือแตกต่างกันไปและไม่ต้องสงสัยกับปัจจัยอื่น ๆ นั่นไม่ส่งผลกระทบต่อความปรารถนาของฉันในการค้นหาข้อมูลนี้และประเมินราคาอย่างยิ่ง เป็นที่ชัดเจนว่าบางคนคิดว่าฉันกำลังมองหาวิธี "เปลี่ยนข้อเหวี่ยง" - เครื่องทำไส้กรอกบางอย่างที่ฉันใส่ข้อมูลเกี่ยวกับปัญหาของฉันและสิ่งที่มาจากคำว่า "การทำงาน" หรือ "โครงสร้าง" นี่ไม่ใช่ความตั้งใจของฉัน สิ่งที่ฉันกำลังมองหาคือการวิจัยว่า - มีข้อแม้และข้อสันนิษฐานมากมายที่ฉันไม่ได้เข้าไปที่นี่ แต่มีวรรณกรรมที่ดีในเรื่องนี้ - คุณสมบัติของซอฟต์แวร์บางอย่างแตกต่างกันไปขึ้นอยู่กับปัญหาและทางเลือกของกระบวนทัศน์ ในคำอื่น ๆ บางคนพูดว่า "OO ให้ความยืดหยุ่นที่ดีขึ้น" หรือ "โปรแกรมการทำงานมีข้อบกพร่องน้อยลง" - (ส่วนหนึ่ง) สิ่งที่ฉันขอเป็นหลักฐานของเรื่องนี้ ส่วนที่เหลือกำลังขอหลักฐานต่อสิ่งนี้หรือข้อสันนิษฐานที่ข้อความเหล่านี้เป็นจริงหรือหลักฐานที่แสดงว่าข้อพิจารณาเหล่านี้ไม่สำคัญ มีความคิดเห็นมากมายว่าทำไมกระบวนทัศน์หนึ่งถึงดีกว่าอีกกระบวนทัศน์หนึ่ง มีวัตถุประสงค์อะไรอยู่เบื้องหลังสิ่งเหล่านี้หรือไม่

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

3
เป็นผู้จัดการทีมและนักพัฒนาในทีมการต่อสู้
ฉันจัดการทีม 6 คนที่เพิ่งย้ายไปสกัม เรามี Scrum Master (หนึ่งในนักพัฒนาในทีม) และเจ้าของผลิตภัณฑ์ เนื่องจากฉันมีเวลาว่างค่อนข้างมาก (เนื่องจากงานด้านการจัดการจำนวนมากที่ฉันเคยทำตอนนี้ทำโดย Scrum Master และเจ้าของผลิตภัณฑ์) และเนื่องจากฉันต้องการรักษาความสัมพันธ์ทางเทคนิคฉันจึงทำงานด้านเทคนิคบางอย่าง ฉันทำหน้าที่เป็นส่วนหนึ่งของทีมพัฒนามุ่งมั่นกับเรื่องราวบางส่วนในแต่ละการวิ่งและมีส่วนร่วมในการประชุมทั้งหมดเป็นส่วนหนึ่งของทีม คุณคิดว่าเป็นความคิดที่ดีหรือไม่? มันสามารถขัดแย้งกับ "องค์กรตนเอง" ของทีมได้หรือไม่?
11 scrum  management 

4
ฉันควรใส่บรรทัดใหม่ก่อนหรือหลังตัวดำเนินการไบนารีหรือไม่ [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา เมื่อคุณอยู่ใน Python หรือ Javascript คุณควรใส่ตัวดำเนินการไบนารีที่ท้ายบรรทัดก่อนหน้าเสมอเพื่อป้องกันการขึ้นบรรทัดใหม่จากการยกเลิกรหัสของคุณก่อนกำหนด มันช่วยให้คุณตรวจจับข้อผิดพลาด แต่ใน C หรือ C ++ นี่ไม่ใช่ปัญหาดังนั้นฉันจึงสงสัยว่า: มีเหตุผลใดที่ฉันจะเลือกรุ่นที่สองมากกว่ารุ่นแรก return lots_of_text + 1; กับ return lots_of_text + 1; (ตัวอย่างเช่นข้อใดข้อหนึ่งช่วยป้องกันข้อผิดพลาดชนิดอื่นหรือไม่หรือข้อใดข้อหนึ่งพิจารณาว่าสามารถอ่านได้มากกว่า)
11 c++  coding-style 

6
ผู้พัฒนาจาวาควรรู้เกี่ยวกับอัลกอริทึมการรวบรวมขยะหรือไม่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันถูกถามเมื่อเร็ว ๆ นี้ในการสัมภาษณ์ถ้าฉันรู้เกี่ยวกับอัลกอริทึมการเก็บขยะใด ๆ ฉันรู้ว่าการเก็บขยะคืออะไร แต่ฉันไม่เคยคิดถึงการเรียนรู้เกี่ยวกับอัลกอริทึมการรวบรวมขยะเพราะในฐานะนักพัฒนาฉันไม่ต้องกังวลเกี่ยวกับมันและตัวรวบรวมขยะทำงานหนักสำหรับฉัน พวกคุณคิดว่าผู้พัฒนา Java ควรรู้เกี่ยวกับอัลกอริทึมตัวรวบรวมขยะหรือไม่? ถ้าใช่คุณบอกฉันได้ไหม

3
การใช้วัตถุทางธุรกิจในรูปแบบการดู
เมื่อใช้ออบเจ็กต์ธุรกิจที่ใช้ซ้ำได้สิ่งที่ควรคำนึงถึงเป็นแนวปฏิบัติที่ดีที่สุดเมื่อสร้างมุมมองแบบจำลอง เราใช้วัตถุที่เราเรียกใช้Builderเพื่อสร้างแบบจำลองมุมมองของเรา ตัวสร้างหนึ่งสำหรับแต่ละหน่วยของมุมมองแบบลอจิคัล (คำสั่งผู้ใช้ ฯลฯ ) ซึ่งแต่ละหน่วยสามารถมีรูปแบบมุมมองที่แตกต่างกันจำนวนหนึ่ง (คำสั่งซื้อประกอบด้วยข้อมูลสรุปบรรทัดคำสั่งและอื่น ๆ ) ผู้สร้างอาจดึงข้อมูลผ่านวัตถุทางธุรกิจมาตรฐานหนึ่งรายการขึ้นไปเพื่อสร้างแบบจำลองมุมมอง อะไรคือการปฏิบัติที่ดีขึ้นเมื่อพูดถึงการใช้อ็อบเจกต์ธุรกิจ / โมเดลในโมเดลที่มีมุมมอง? วิธีที่ 1 อนุญาตให้ใช้วัตถุธุรกิจในโมเดลมุมมองหรือไม่ //Business object in some library public class Order { public int OrderNum; public int NumOrderLines; //... } //Order builder in website public class OrderBuilder { public OrderSummary BuildSummaryForOrder(int OrderNum) { Some.Business.Logic.Order obOrder = …

13
มีภาษาการเขียนโปรแกรมที่ 1/6 ทำงานเหมือนกับ 1.0 / 6.0 หรือไม่
ในขณะที่ฉันกำลังเขียนโปรแกรมใน C ++ เมื่อหลายวันก่อนฉันทำผิดพลาด (ที่ฉันมีประวัติของการทำมัน!) ในส่วนหนึ่งของรหัสของฉันฉันมี 1/6 และฉันคาดหวังว่าจะเป็น 0.16666666666 ซึ่งไม่ใช่กรณี ในขณะที่คุณทุกคนรู้ว่าผลลัพธ์คือ 0 - C, C ++, Java, Python ทั้งหมดทำงานเหมือนกัน ฉันโพสต์บนหน้า Facebook ของฉันและตอนนี้มีการอภิปรายเกี่ยวกับกรณีที่มีการเขียนโปรแกรมภาษาที่มีลักษณะการทำงานเช่นเดียวกับ1/61.0/6.0

5
หลักการชดเชย Liskov เข้ากันไม่ได้กับการวิปัสสนาหรือการพิมพ์ดีดเป็ด?
ฉันเข้าใจอย่างถูกต้องหรือไม่ว่าหลักการแทน Liskovไม่สามารถสังเกตได้ในภาษาที่วัตถุสามารถตรวจสอบตัวเองเช่นภาษาเป็ดที่พิมพ์เป็นปกติ ยกตัวอย่างเช่นในทับทิมถ้าระดับBสืบทอดจากชั้นเรียนAแล้วสำหรับวัตถุทุกxของA, x.classเป็นไปได้กลับมาAแต่ถ้าxเป็นวัตถุของB, จะไม่กลับมาx.classA นี่คือคำแถลงของ LSP: Let Q (x)เป็นสถานที่ให้บริการสามารถพิสูจน์ได้เกี่ยวกับวัตถุxประเภทT จากนั้นQ (y)ควรจะสามารถพิสูจน์ได้สำหรับวัตถุYประเภทSที่Sเป็นชนิดย่อยของT ดังนั้นใน Ruby เช่น class T; end class S < T; end ละเมิด LSP ในแบบฟอร์มนี้ตามที่เห็นในคุณสมบัติq (x) =x.class.name == 'T' ส่วนที่เพิ่มเข้าไป. หากคำตอบคือ "ใช่" (LSP ไม่เข้ากับการวิปัสสนา) คำถามอื่น ๆ ของฉันจะเป็น: มีรูปแบบที่อ่อนแอของ LSP ที่ "อ่อนแอ" ซึ่งอาจจะเก็บไว้เป็นภาษาไดนามิกอาจอยู่ภายใต้เงื่อนไขเพิ่มเติมบางอย่างและมีชนิดพิเศษเท่านั้น ของคุณสมบัติ ปรับปรุง สำหรับการอ้างอิงนี่เป็นอีกสูตรของ LSP ที่ฉันพบบนเว็บ: ฟังก์ชันที่ใช้พอยน์เตอร์หรือการอ้างอิงไปยังคลาสพื้นฐานต้องสามารถใช้วัตถุของคลาสที่ได้รับโดยไม่ต้องรู้ เเละอีกอย่าง: …

6
ฉันจะประเมินโครงการเมื่อฉันต้องการรวมช่วงการเรียนรู้สำหรับเทคโนโลยีใหม่ได้อย่างไร
บางครั้งมีโครงการวิจัยและพัฒนาที่ไม่มีอะไรรู้ล่วงหน้าเกี่ยวกับเทคโนโลยีแนวคิดและลูกค้า อย่างไรก็ตามผู้จัดการยังคงต้องการเวลาโดยประมาณ ฉันจะทำอย่างไรเพื่อจัดทำประมาณการที่มีประโยชน์
11 estimation 

10
คำสั่ง SQL ทุกคำสั่งจะต้องได้รับการตรวจสอบโดย DBA
ฉันหมายถึงทุกสิ่งไม่ใช่แค่การเปลี่ยนแปลงคีมา แม้แต่ SELECT อย่างง่ายบนคีย์หลักก็ไม่สามารถทำการผลิตได้แม้ว่ามันจะได้รับการตรวจสอบโค้ดโดยผู้พัฒนาคนอื่น ๆ (ในบริบท) โดยไม่มีการตรวจสอบ DBA ของทุกคำสั่งสกัดจากโค้ดและส่งด้วย EXPLAIN รายละเอียด ความถี่ที่จะถูกเรียก ฯลฯ และอื่น ๆ หากคุณอยู่ในสภาพแวดล้อมเช่นนี้คุณคิดว่ามันเป็นกำไรสุทธิหรือเป็นการพัฒนาที่ดีอยู่ใช่ไหม ในฐานะคนที่ทำงานกับฐานข้อมูลเชิงสัมพันธ์มานานหลายปีฉันพบว่าทัศนคติ "ผู้พัฒนาไม่สามารถเชื่อถือได้ในการใช้ฐานข้อมูล" ที่ไม่ได้รับการรับรองและฉันอยากรู้ว่าสถานการณ์นี้เป็นอย่างไร สำหรับสิ่งที่คุ้มค่านี่เป็นเพียงการพัฒนาเว็บไม่ใช่สิ่งที่สำคัญ
11 code-reviews  dba 

8
เหตุใดจึงไม่เพิ่มรูปแบบการออกแบบในการสร้างภาษา
เมื่อเร็ว ๆ นี้ฉันได้พูดคุยกับเพื่อนร่วมงานที่กล่าวว่า บริษัท ของเขากำลังทำงานเพื่อเพิ่มรูปแบบการออกแบบ MVC เป็นส่วนขยาย PHP เขาอธิบายว่าพวกเขาเขียนรหัส C เพื่อเพิ่มControllers, Models and Viewsโครงสร้างภาษาเพื่อเพิ่มประสิทธิภาพ ตอนนี้ฉันรู้แล้วว่า MVC เป็นรูปแบบการออกแบบสถาปัตยกรรมที่ใช้กันอย่างแพร่หลายในเว็บแอปพลิเคชัน แต่ฉันยังต้องเจอภาษาที่มีโครงสร้างภาษาสำหรับตัวควบคุม IMHO การรวมรูปแบบการออกแบบเป็นภาษาสามารถเน้นความสำคัญของการออกแบบ OO ที่ดี ดังนั้นทำไมรูปแบบการออกแบบที่ไม่ได้ใช้มากที่สุด (MVC, Factory, Strategy, ... ฯลฯ ) เพิ่มลงในโครงสร้างภาษา หากคำถามฟังดูกว้างเกินไปคุณอาจ จำกัด คำถามไว้ที่ PHP เท่านั้น แก้ไข: ฉันไม่ได้หมายความว่าต้องใช้รูปแบบการออกแบบเมื่อพัฒนาโครงการ จริงๆแล้วฉันส่งเสริมวิธีการในการทำให้มันง่ายตราบเท่าที่มันใช้งานได้

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