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

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

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

4
ฉันจะทำเงินจาก FOSS ของฉันในขณะที่ไม่เปิดเผยตัวตนได้อย่างไร
สมมติว่า: คุณได้สร้างโครงการ FOSS ที่คนอื่นเห็นว่ามีประโยชน์อาจมีประโยชน์พอที่จะบริจาคหรือจ่ายเงินสำหรับการแก้ไขที่ต้องทำ เป็นโครงการซอฟต์แวร์ที่สมบูรณ์แบบและถูกต้องตามกฎหมาย มันไม่มีส่วนเกี่ยวข้องกับการเข้ารหัสเป็นอาวุธ, เพลง p2p, หรือสิ่งใด ๆ ที่อาจนำไปสู่การรับประกันการค้นหาหรือการถูกฟ้องร้อง คุณต้องการให้คุณมีส่วนร่วมในการไม่เปิดเผยตัวตนหรือนามแฝง คุณต้องการรับเงินสำหรับความพยายามของคุณถ้าคนเต็มใจ เป็นไปได้และถ้าเป็นเช่นนั้นจะทำอย่างไร? เมื่อฉันพูดถึงการไม่เปิดเผยตัวตนฉันรู้ว่าจำเป็นต้องกำหนดขอบเขต ฉันไม่ได้พูดถึง Wikileaks ในลักษณะของผู้รับมอบฉันทะ 20 ชั้นที่ไม่เปิดเผยตัวตน ฉันคาดว่าตัวแทนจดหมาย 3 คนจะสามารถระบุตัวบุคคลได้อย่างง่ายดาย สิ่งที่ต้องการคือการป้องกันจากคู่แข่งทางการค้าหรือคนสุ่มซึ่งคาดว่าจะไม่สามารถรับตัวกลางทางการเงินเพื่อเปิดเผยรายละเอียดของคุณเพียงแค่ขอให้พวกเขา ทำไมคุณถึงต้องการไม่เปิดเผยตัวตน? ฉันคิดว่ามีเหตุผลหลายประการบางทีคุณอาจใช้การเริ่มต้นโหมดซ่อนตัวและไม่ต้องการให้เบาะแสคู่แข่งของคุณเกี่ยวกับเทคโนโลยีที่คุณใช้ อาจเป็นโครงการที่ไม่มีส่วนเกี่ยวข้องกับงานประจำวันของคุณ แต่ไม่ได้รับการพัฒนา แต่ บริษัท ที่คุณทำงานมีนโยบายที่ไม่เป็นธรรม (และอาจบังคับไม่ได้) โดยระบุว่าการเข้ารหัสใด ๆ ที่คุณเป็นเจ้าของ บางทีคุณอาจให้คุณค่ากับความเป็นส่วนตัวของคุณ สำหรับสิ่งที่คุ้มค่าคุณตั้งใจจะจ่ายภาษีที่เกี่ยวข้องในประเทศของคุณจากการบริจาคใด ๆ
10 foss 

2
สัมผัสกับ eLance (และไซต์ที่คล้ายกัน) [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันกำลังพิจารณา Freelancing ผ่าน eLance.com (หรือเว็บไซต์อื่นที่คล้ายคลึงกัน) เพื่อช่วยชำระค่าใช้จ่ายในขณะที่กำลังพัฒนาเกม (ซึ่งจะชำระค่าใช้จ่ายในที่สุด) การทำงานผ่าน elance เป็นอย่างไร คำแนะนำหรือกลยุทธ์ใด ๆ ข้อเสนอแนะใด ๆ ที่มีความนิยม

5
คุณทำตามกฎ“ No Dependency Cycle” อย่างเคร่งครัดเพียงใด (ขึ้นอยู่กับ)
พื้นหลังเล็กน้อย: ในฐานะผู้นำทีมฉันใช้ NDepend ประมาณสัปดาห์ละครั้งเพื่อตรวจสอบคุณภาพรหัสของเรา โดยเฉพาะอย่างยิ่งการครอบคลุมการทดสอบบรรทัดของโค้ดและการวัดความซับซ้อนตามวัฏจักรมีค่าสำหรับฉัน แต่เมื่อมันมาถึงการปรับระดับและรอบการพึ่งพาฉันเป็นบิต ... กังวลดี Patrick Smacchia มีบล็อกโพสต์ที่ดีซึ่งอธิบายถึงเป้าหมายของการปรับระดับ เพื่อความชัดเจน: ภายใต้ "วงจรการพึ่งพา" ฉันเข้าใจการอ้างอิงแบบวงกลมระหว่างสองเนมสเปซ ขณะนี้ฉันกำลังทำงานบนกรอบ GUI ที่ใช้ Windows CE สำหรับเครื่องมือฝังตัว - แค่คิดถึงแพลตฟอร์มกราฟิก Android แต่สำหรับเครื่องมือต่ำสุด เฟรมเวิร์กเป็นชุดประกอบเดี่ยวที่มีรหัสประมาณ 50,000 บรรทัด (ไม่รวมการทดสอบ) เฟรมเวิร์กแบ่งออกเป็นเนมสเปซต่อไปนี้: ระบบนำทางหลัก & ระบบย่อยเมนู ระบบย่อยของหน้าจอ (ผู้นำเสนอ / การดู / ... ) ชั้นควบคุม / Widget วันนี้ฉันใช้เวลาครึ่งวันในการพยายามนำรหัสไปสู่ระดับที่เหมาะสม [ขอบคุณ Resharper ที่ไม่มีปัญหาโดยทั่วไป] แต่ในทุกกรณีมีบางวงจรการพึ่งพาอาศัยอยู่ ดังนั้นคำถามของฉัน: คุณปฏิบัติตามกฎ …

8
ฟรีเช่นเดียวกับเบียร์ฟรี
เมื่อหลายปีก่อน (อย่างแม่นยำมากขึ้นในปี 1998) ผู้คนที่พูดภาษาอังกฤษเริ่มสับสนกับคำว่าฟรีเมื่อนำไปใช้กับซอฟต์แวร์ทำให้สมาชิกบางคนของมูลนิธิซอฟต์แวร์เสรีเพื่อสร้างคำใหม่: โอเพ่นซอร์ส ( http: //www.gnu) org / ปรัชญา / ซอฟต์แวร์ฟรีสำหรับ -fire.html ) ความกังวลที่ยิ่งใหญ่ก็คือผู้คนเข้าใจผิดโดยไม่พูดอะไรและฟรีเบียร์ฟรี (ดูวิกิพีเดีย: http://en.wikipedia.org/wiki/Free_and_open_source_software ) ฟรีที่นี่เกี่ยวข้องกับเสรีภาพในการใช้งานและการแบ่งปันซอฟต์แวร์ของคุณในลักษณะที่ขัดต่อซอฟต์แวร์ "ลิขสิทธิ์" (และที่จดสิทธิบัตร) กรรมสิทธิ์ มันถูกเปิดตัวครั้งแรกโดย Richard Stallman ในปี 1986 แกนกลางคือชุดของเสรีภาพ: Freedom 0: อิสระในการเรียกใช้โปรแกรมเพื่อวัตถุประสงค์ใด ๆ Freedom 1: อิสระในการศึกษาวิธีการทำงานของโปรแกรมและเปลี่ยนแปลงเพื่อให้มันทำในสิ่งที่คุณต้องการ Freedom 2: อิสระในการแจกจ่ายซ้ำสำเนาเพื่อให้คุณสามารถช่วยเหลือเพื่อนบ้านของคุณ Freedom 3: อิสระในการปรับปรุงโปรแกรมและเผยแพร่การปรับปรุงของคุณ (และรุ่นที่แก้ไขโดยทั่วไป) สู่สาธารณะเพื่อประโยชน์ของชุมชนโดยรวม เราทุกคนรู้เกี่ยวกับเรื่องนั้น (อย่างน้อยผู้ที่ติดตามการสนทนานี้มานับ แต่นั้น) ในความคิดของฉันคำว่าโอเพนซอร์ซทำให้เราชัดเจน แต่มันก็มั่นใจแล้วโดย Freedom …

1
ชั้นกาวหรือการจัดการทำอะไรมากเกินไปเมื่อไหร่?
ฉันมีแนวโน้มที่จะสร้างชั้นเรียนแบบรวมศูนย์ที่จัดการชั้นเรียนอื่น ๆ ในการออกแบบของฉัน มันไม่ได้เก็บข้อมูลทุกอย่าง แต่คำขอข้อมูลส่วนใหญ่จะไปที่ "ผู้จัดการ" ก่อน ในขณะที่ดูคำตอบสำหรับคำถามนี้ฉันสังเกตเห็นคำว่า "God Object" Wikipedia ระบุว่าเป็น antipattern เข้าใจได้ เส้นแบ่งระหว่างคลาสกาวที่ถูกต้องหรือโมดูลที่ส่งผ่านข้อมูลและข้อความจากที่หนึ่งไปยังอีกที่หนึ่งและคลาสที่ทำมากเกินไป


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

12
ทำไมเราต้องเรียนรู้การเขียนโปรแกรมตามขั้นตอนก่อนที่เราจะเรียนรู้การเขียนโปรแกรมเชิงวัตถุ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ตอนนี้ฉันอยู่มหาวิทยาลัยปีที่ 4 และเมื่อฉันพูดคุยกับอาจารย์เกี่ยวกับหัวข้อนี้เขาปฏิเสธความคิดเห็นของฉันและวิจารณ์ฉันอย่างหนักมาก (ในมหาวิทยาลัยของฉันเรากำลังสอน C (ANSI) (ในขั้นตอน ชั้นเรียนการเขียนโปรแกรม - ในปีที่ 1 ที่มหาวิทยาลัย) ก่อน C ++ (ในชั้นเรียน OOP ในปีที่ 2) และอื่น ๆ ... แต่ตอนอายุ 13 พี่ชายของฉันถูกสอนโดยฉัน Java ก่อนและไม่มีอะไรอื่น ตอนนี้เขาสามารถทำเกือบทุกอย่างที่นักเรียนปกติปีที่ 2 สามารถทำกับ Java สำหรับคุณข้อดีฉันต้องการทราบว่าทำไมคุณคิดว่าเราควรจะสอนการเขียนโปรแกรมขั้นตอนก่อน

1
ใช้รหัสของตัวเองในโครงการอิสระ
ฉันทำธุรกิจอิสระมานานกว่า 2 ปีแล้ว ในขณะที่ทำโครงการเพื่อคนอื่นฉันได้สร้างการรวบรวมงานทั่วไปที่ฉันใช้ในโครงการและใส่ลงในรหัส เป็นห้องสมุดที่มีฟังก์ชั่นบางอย่างที่ฉันสามารถนำกลับมาใช้ใหม่ได้โดยไม่ต้องเขียนซ้ำในเวลาเดียวกัน ฉันกำลังพูดถึงการเข้าถึงฐานข้อมูล Access ดาวน์โหลดข้อมูลจาก FTP และสิ่งที่คล้ายกัน สิ่งนี้ยอมรับได้จากมุมมองทางกฎหมายหรือไม่? อะไรคือความแตกต่างในการนำรหัสเก่ามาใช้ใหม่และเขียนใหม่จากศูนย์ (ใช้สมองของคุณเองอีกครั้งดังนั้นจึงเป็นตรรกะเดียวกัน) แน่นอนว่าฉันไม่ได้ถือลิขสิทธิ์ใด ๆ และให้รหัสแหล่งที่มาสำหรับชั้นเรียนเหล่านี้แก่ลูกค้าของฉัน
10 legal  code-reuse 

6
ฉันควรเลือกภาษาโปรแกรมที่ใช้งานได้หรือไม่
เมื่อเร็ว ๆ นี้ฉันกังวลเกี่ยวกับวิธีเขียนรหัสของฉันมากขึ้น หลังจากอ่านหนังสือสองสามเล่มเกี่ยวกับรูปแบบการออกแบบ (และการนำไปปฏิบัติมากเกินไปของพวกเขาฉันแน่ใจ) ฉันได้เปลี่ยนความคิดของฉันอย่างมากไปทางแค็ปซูลสิ่งที่เปลี่ยนแปลง ฉันมักจะสังเกตเห็นว่าฉันเขียนอินเทอร์เฟซน้อยลงและโค้ดที่เน้นวิธีการมากขึ้นซึ่งฉันชอบที่จะสปรูซชีวิตในคลาสเก่าด้วยภาคแสดงการกระทำและงานมอบหมายอื่น ๆ ฉันมักจะคิดว่ามันมักจะเป็นการกระทำที่เปลี่ยนแปลงดังนั้นฉันจึงสรุปแค็ปซูลเหล่านั้น ฉันมักจะแยกย่อยอินเทอร์เฟซให้เป็นวิธีการเดียว แต่บ่อยครั้งที่ฉันต้องการใช้ผู้รับมอบสิทธิ์สำหรับงานแทนที่จะบังคับให้รหัสลูกค้าสร้างคลาสใหม่ ดังนั้นฉันเดาว่ามันจะโดนฉัน ฉันควรจะเขียนโปรแกรมฟังก์ชั่นแทน? แก้ไข: ฉันอาจมีความเข้าใจผิดเกี่ยวกับการตั้งโปรแกรมการทำงาน ปัจจุบันภาษาที่ฉันเลือกคือ C # และฉันมาจากพื้นหลัง C ++ ฉันทำงานเป็นนักพัฒนาเกม แต่ตอนนี้ฉันว่างงาน ฉันมีความหลงใหลในงานสถาปัตยกรรมอย่างมาก คุณธรรมของฉันคือรหัสที่สะอาดยืดหยุ่นใช้ซ้ำได้และบำรุงรักษาได้ ฉันไม่รู้ว่าฉันถูกวางยาด้วยวิธีการเหล่านี้หรือไม่ ฉันเป็นไข้ refactoring หรือฉันควรจะไปต่อ? ฉันเข้าใจว่านี่อาจเป็นคำถามเกี่ยวกับ"ใช้เครื่องมือที่เหมาะสมสำหรับงาน"แต่ฉันอยากได้ยินความคิดของคุณ ฉันควรเลือกภาษาที่ใช้งานได้หรือไม่ หนึ่งในปัจจัยความกลัวของฉันคือการทำให้ Visual Studio สะดวกสบาย

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

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

5
คุณใช้ทั้งเทคนิคการตรวจสอบลูกค้าและฝั่งเซิร์ฟเวอร์หรือไม่?
คุณใช้ทั้งเทคนิคการตรวจสอบลูกค้าและฝั่งเซิร์ฟเวอร์เมื่อตรวจสอบข้อมูลจากผู้ใช้เช่นผ่านแบบฟอร์มการติดต่อหรือไม่ ถ้าเป็นเช่นนั้นจริงหรือไม่ คุณเป็นวิศวกรหรือเปล่า

10
ดูดน้อยทุกปี? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ดูดน้อยทุกปี -Jeff Atwood ฉันเจอบทความที่ลึกซึ้งแล้วการอ้างอิงโดยตรงจากโพสต์ ฉันมักจะคิดว่าการดูดน้อยลงทุก ๆ ปีเป็นสิ่งที่โปรแกรมเมอร์ผู้ถ่อมตนพัฒนาขึ้น คุณควรไม่พอใจกับรหัสที่คุณเขียนเมื่อปีที่แล้ว หากไม่เป็นเช่นนั้นหมายความว่า A) คุณไม่ได้เรียนรู้อะไรเลยในหนึ่งปี B) รหัสของคุณไม่สามารถปรับปรุงได้หรือ C) คุณไม่เคยทบทวนรหัสเดิมอีกเลย ทั้งหมดนี้คือความตายของนักพัฒนาซอฟต์แวร์ สิ่งนี้เกิดขึ้นบ่อยแค่ไหนหรือไม่เกิดขึ้นกับคุณ? นานแค่ไหนก่อนที่คุณจะเห็นการปรับปรุงที่แท้จริงในการเข้ารหัสของคุณ เดือนปี? คุณเคยทบทวนรหัสเดิมของคุณอีกครั้งหรือไม่? รหัสเก่าของคุณทำให้เกิดภัยพิบัติบ่อยแค่ไหน หรือคุณต้องจัดการกับหนี้ทางเทคนิคของคุณบ่อยเพียงใด แน่นอนว่ามันเป็นเรื่องที่เจ็บปวดอย่างมากที่จะแก้ไขข้อบกพร่องเก่า ๆ และรหัสสกปรกที่เราอาจทำเพื่อให้ตรงตามกำหนดเวลาและการแก้ไขอย่างรวดเร็วเหล่านั้นในบางกรณีเราอาจต้องเขียนแอปพลิเคชั่น / รหัสใหม่เกือบทั้งหมด ไม่มีข้อโต้แย้งเกี่ยวกับเรื่องนี้ นักพัฒนาบางคนที่ฉันเจอเจอแย้งว่าพวกเขาอยู่ในช่วงวิวัฒนาการซึ่งการเข้ารหัสของพวกเขาไม่ต้องการการปรับปรุงหรือไม่สามารถพัฒนาได้อีกต่อไป สิ่งนี้เกิดขึ้นหรือไม่ ถ้าเป็นเช่นนั้นกี่ปีในการเขียนโค้ดกับภาษาใดภาษาหนึ่งคาดว่าสิ่งนี้จะเกิดขึ้น? ที่เกี่ยวข้อง: เคยมองย้อนกลับไปที่บางส่วนของรหัสเก่าของคุณและแสยะด้วยความเจ็บปวด? Star Wars Moment in Code "ลุค! ฉันเป็นรหัสของคุณ!" "ไม่! เป็นไปไม่ได้! มันเป็นไปไม่ได้!"

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