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

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

3
แบบแผนการตั้งชื่อเช่นตัวแปรโลคอลและตัวแปร [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันกำลังพูดคุยกับอนุสัญญาการเข้ารหัสผู้พัฒนาระดับสูงเพื่อนำไปใช้กับโครงการของเรา (ส่วนใหญ่เป็นโครงการ Java / JEE) ฉันไม่เห็นด้วยกับการประชุมที่เขาเสนอ: ชื่อตัวแปรอินสแตนซ์ควรเริ่มต้นด้วย "_", ตัวแปรโลคอลด้วย "loc", และพารามิเตอร์เมธอดด้วย "par" ดังนั้นมันจะง่ายต่อการระบุที่มาและขอบเขตของตัวแปร ในขณะที่เขาหยิบยกข้อโต้แย้งสำหรับหน่วยความจำระยะสั้นและความสามารถในการอ่านฉันไม่เห็นด้วยกับความจริงที่ว่ามันค่อนข้างลดความสามารถในการอ่าน IDEs เช่นตัวแปรรูปแบบ Eclipse แตกต่างกันไปตามประเภทของพวกเขาและปัญหานี้ คุณมีความเห็นข้อโต้แย้งหรือการศึกษาที่สนับสนุนประเด็นของฉัน (หรือคัดค้าน) หรือไม่?
13 java  naming  variables 

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

2
การใช้ Memcached: เป็นการดีหรือไม่ที่จะอัพเดตแคชเมื่อทำการอัพเดตฐานข้อมูล?
คำถามนี้เกี่ยวกับหลักปฏิบัติที่ดีที่สุดในสถาปัตยกรรม สถาปัตยกรรมปัจจุบันของเรา ฉันมีคลาส PHP ที่เข้าถึง MySQL สำหรับข้อมูลผู้ใช้ Userขอเรียกว่า Userมีการเข้าถึงหลายครั้งดังนั้นเราจึงติดตั้งเลเยอร์ของแคชเพื่อลดภาระ เลเยอร์แรกคือสิ่งที่เราเรียกว่าแคช "ต่อคำขอ" หลังจากที่ข้อมูลได้รับการเรียกข้อมูลจาก MySQL, Userเราเก็บข้อมูลในทรัพย์สินส่วนตัวของ การร้องขอใด ๆ ที่ตามมาสำหรับข้อมูลจะส่งคืนคุณสมบัติแทนการร้องขอข้อมูลจาก MySQL อีกครั้ง เนื่องจากคำขอทางเว็บนั้นใช้งานและตายต่อการร้องขอแคชนี้จะป้องกันไม่ให้แอปพลิเคชันเข้าถึง MySQL มากกว่าหนึ่งครั้งในคำขอเดียว ชั้นที่สองของเราคือ Memcached เมื่อคุณสมบัติส่วนตัวว่างเปล่าก่อนอื่นเราตรวจสอบ Memcached สำหรับข้อมูล หาก Memcached ว่างเรา MySQL แบบสอบถามสำหรับข้อมูลที่ปรับปรุง memcached Userและปรับปรุงทรัพย์สินส่วนตัวของ คำถาม แอปพลิเคชันของเราเป็นเกมและบางครั้งจำเป็นที่ข้อมูลบางอย่างจะเป็นข้อมูลล่าสุด ในช่วงเวลาประมาณห้านาทีคำขอการอ่านสำหรับข้อมูลผู้ใช้อาจเกิดขึ้น 10 หรือ 11 ครั้ง; จากนั้นการอัปเดตอาจเกิดขึ้น คำขอการอ่านครั้งต่อไปจะต้องทันสมัยหรือกลไกของเกมล้มเหลว ดังนั้นสิ่งที่เราทำคือการใช้รหัสที่ดำเนินการเมื่อมีการอัพเดทฐานข้อมูล รหัสนี้ตั้งค่าคีย์ใน Memcached พร้อมข้อมูลที่อัปเดตดังนั้นการร้องขอต่อ Memcached ที่ตามมาทั้งหมดเป็นข้อมูลล่าสุด สิ่งนี้ดีที่สุดหรือไม่? …

4
ในบ้านกับสภาพแวดล้อมการพัฒนาซอฟต์แวร์ [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ในอุตสาหกรรมมีความแตกต่างระหว่างสภาพแวดล้อม 'ในบ้าน' ที่นักพัฒนาซอฟต์แวร์กำลังเขียนรหัสซึ่ง บริษัท จะใช้และสภาพแวดล้อม 'การพัฒนาซอฟต์แวร์' ที่เหมาะสมซึ่งเป็นซอฟต์แวร์ที่สร้างขึ้นเพื่อจำหน่าย / จำหน่าย สู่สาธารณะ ความแตกต่างที่เห็นได้ชัดระหว่างสองคือ บริษัท ที่มุ่งเน้นการพัฒนาซอฟต์แวร์โดยทั่วไปจะยึดติดกับวงจรชีวิตการพัฒนาซอฟต์แวร์บางอย่างเช่นการเขียนข้อมูลจำเพาะการทดสอบการสร้าง ฯลฯ ในขณะที่ร้านค้าภายใน บริษัท ทำสิ่งต่าง ๆ ในแบบสบาย ๆ มากกว่าเพราะพวกเขาเป็นผู้ใช้งานและสามารถแก้ไขสิ่งที่ไม่ถูกต้องได้เสมอ ในฐานะนักเรียน (เช่นนักเรียนคนอื่น ๆ ) ฉันคาดหวังว่าตัวเองจะจบลงด้วยการทำงานในสภาพแวดล้อมการพัฒนาซอฟต์แวร์ แต่ฉันก็จบลงด้วยการได้ตำแหน่งแรกของ บริษัท ที่ดำเนินธุรกิจแฟชั่นในบ้านมากกว่า บางครั้งฉันสงสัยว่าฉันพลาดประสบการณ์การพัฒนาซอฟต์แวร์ที่สมบูรณ์แบบหรือไม่ มีพื้นฐานสำหรับความรู้สึกนี้หรือไม่? ฉันควรพยายามเข้าร่วมสภาพแวดล้อมการพัฒนาซอฟต์แวร์ที่เหมาะสมหรือไม่

6
การใช้ SVN ไม่ดี - Mercurial เป็นคำตอบหรือไม่
ที่ทำงานเราใช้ SVN แต่ในนามเท่านั้น เราไม่แยกหรือรวม เราเก็บที่เก็บสองชุดหนึ่งที่ทำหน้าที่เป็นสาขา "แท็ก" ที่ได้รับการคัดลอกเมื่อเราทำการปรับใช้และเก็บไว้เพื่อแก้ไขข้อผิดพลาดและทันทีคุณสมบัติประเภทนี้ "ต้องไปโดยเร็ว" เราต้องจำไว้ว่าให้คัดลอกการเปลี่ยนแปลงที่ทำในหนึ่งสำเนาไปยังอีกชุดหนึ่ง ("ลำตัว") เรามีโครงการโหลภายในโฟลเดอร์เดียวในพื้นที่เก็บข้อมูลแทนที่จะแยกพวกมันออก ในระยะสั้นเกี่ยวกับสิ่งเดียวที่เราใช้ SVN สำหรับคือความสามารถในการกระทำ ทุกอย่างอื่นทำด้วยตนเอง ฉันประเมิน Mercurial แล้ว ฉันเคยใช้ Git มาก่อน (ฉันเป็นคนเดียวในทีมที่ใช้ DVCS) และฉันก็หยิบ Mercurial ขึ้นมาอย่างรวดเร็ว ฉันกำลังถกเถียงกันว่าแนะนำ Mercurial ให้กับคนอื่น ๆ ในทีมว่าเป็น "วิธีที่ดีกว่า" ในการทำสิ่งต่าง ๆ เพราะการแตกแขนงเป็นเรื่องง่ายการรวมกันนั้นง่ายกว่ามากและเราสามารถกระทำสิ่งต่าง ๆ ในเนื้อหาหัวใจของเรา สาขาเมื่อพวกเขาพร้อม เราจะได้รับประโยชน์ทั้งหมดของ SVN (และเราไม่ได้รับประโยชน์มากมายตอนนี้เพราะไม่มีใครเข้าใจ SVN ได้จริง) รวมถึงคุณสมบัติใหม่ที่เราไม่จำเป็นต้องมีไฟล์ที่ไม่มีเวอร์ชันมากมายลอยอยู่ดังนั้นถ้าเราต้องย้อนกลับ เราเมาแล้ว เวิร์กโฟลว์นั้นดูเรียบง่ายขึ้นเราแค่ต้องจำไว้ว่า "Commit" นั้นเป็นของท้องถิ่นและ "Push" ก็เหมือนกับการกระทำของ …

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

7
ฉันสามารถสมัครงาน“ วิศวกรซอฟต์แวร์” โดยไม่ต้องเป็นวิศวกรได้หรือไม่? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ฉันมาจากประเทศที่คำว่า "วิศวกร" หรือ "วิศวกรรม" ถูกควบคุมโดยกฎหมายอย่างเคร่งครัด ซึ่งหมายความว่าคุณจะต้องสำเร็จการศึกษาด้านวิศวกรรมและผ่านการสอบเพื่อเข้าร่วมสมาคมวิชาชีพของวิศวกรเพื่อใช้ชื่อเรื่อง ฉันสับสนเล็กน้อยเกี่ยวกับคำว่า "วิศวกรซอฟต์แวร์" ที่ใช้ในอุตสาหกรรมทั่วโลก ฉันอ่านหน้าวิกิพีเดียในวิศวกรซอฟต์แวร์และส่วนที่เชื่อมโยงของหน้าเกี่ยวกับการใช้คำซึ่งเสนอการสนทนาในเชิงลึก อย่างไรก็ตามคำถามของฉันค่อนข้างชัดเจน รู้ว่าฉันยังไม่จบปริญญาวิศวกรรม (แต่ฉันชอบคิดว่าฉันผลิตซอฟต์แวร์ที่ออกแบบมาอย่างดี!) เมื่อฉันเห็นการเปิดสำหรับวิศวกรซอฟต์แวร์จาก บริษัท ระหว่างประเทศ ? ฉันควรจะเน้นว่าฉันไม่ได้ปริญญาวิศวกรรมหรือไม่?

3
Domain Objects ใน Domain Driven Design ควรเป็นแบบเขียนอย่างเดียวหรือไม่
ฉันได้อ่านเกี่ยวกับการออกแบบการขับเคลื่อนด้วยโดเมนเป็นเวลาเกือบสองปีและได้รับการแนะนำแนวคิดบางอย่างเกี่ยวกับการทำงานประจำวันของฉันอย่างน้อยหรือวางแผนอย่างน้อยสำหรับสิ่งที่ฉันทำเป็นประจำในการออกแบบโดเมนที่ขับเคลื่อนได้ ข้อสรุปหนึ่งที่ฉันได้เริ่มมาโดยเฉพาะอย่างยิ่งในการตอบสนองต่อการอ่านเพิ่มเติมเกี่ยวกับการจัดหากิจกรรมและการแยกความรับผิดชอบคำสั่งแบบสอบถาม (CQRS) ที่บางทีวัตถุโดเมนมีวัตถุประสงค์ที่จะใช้สำหรับการเขียนเท่านั้น เพื่อให้ชัดเจนยิ่งขึ้นดูเหมือนว่าสิ่งที่ผู้คนแนะนำอย่างละเอียดในเอกสารส่วนใหญ่ที่ฉันได้อ่านว่าวัตถุโดเมนมีหน้าที่ในการดำเนินการ / การคำนวณโดเมนเป็นศูนย์กลางการตรวจสอบความถูกต้องและจากนั้นส่วนใหญ่จะเป็นถนน โครงสร้างพื้นฐานที่มีให้ภายในการใช้พื้นที่เก็บข้อมูล แม้ว่าฉันจะชอบความจริงที่ว่าสิ่งนี้อาจลดความซับซ้อนของโมเดลโดเมนลงอย่างมากเนื่องจากช่วยลดความรับผิดชอบในการเปิดเผยสถานะ ถ้ามันถูกต้องจริง ๆ แล้วว่าวัตถุโดเมนส่วนใหญ่จะใช้เป็นวัตถุแบบเขียนอย่างเดียวแล้วนั่นทำให้เกิดคำถามสำหรับฉันที่ฉันหวังว่าใครบางคนสามารถตอบ วิธีการหนึ่งทำการทดสอบหน่วยบนวัตถุที่มี setters หรือวิธีการที่ปรับเปลี่ยนสถานะของวัตถุ แต่ที่ให้ไม่มีส่วนต่อประสานภายนอกสาธารณะเพื่ออ่านสถานะจากเช่น getters คุณสมบัติใน C #? มันโอเคที่จะเปิดเผยสถานะเพียงเพื่อจุดประสงค์ในการทำให้วัตถุนั้นทดสอบได้หรือไม่? ผู้ใช้จะแสดงผลลัพธ์ของการคำนวณหรือการดำเนินการในโดเมนโดยไม่ต้องยืนยันพวกเขาได้อย่างไรแล้วดึงผลลัพธ์จากการเก็บข้อมูลไว้ภายนอกบริบทของโดเมน การเปิดเผยสถานะเพียงเพื่อจุดประสงค์ในการแสดงผลลัพธ์เท่านั้นหรือไม่ เป็นกฎของหัวแม่มือที่ควรได้รับทรัพย์สินเท่านั้น (รับ accessors) เป็นคนที่สามารถเขียนได้ในโดเมน? หรือกล่าวว่าคุณสมบัติที่แตกต่างกันอย่างอ่านง่ายควรเป็นสิ่งเดียวที่ควรหลีกเลี่ยงเนื่องจากมีไว้เพื่อการอ่านเท่านั้นและไม่ได้มีบทบาทที่จำเป็นในแบบจำลองโดเมนจริงหรือ วัสดุที่เกี่ยวข้อง: TDD, DDD และ Encapsulation

2
สคริปต์การปรับใช้ควรเป็นสิ่งประดิษฐ์ของบิลด์หรือไม่
นี่เป็นโครงการเว็บที่เขียนด้วย Java ดังนั้นฉันจึงเขียน build และสคริปต์การปรับใช้ ในการสร้างงานสร้างฉันใช้มด การสร้างอย่างต่อเนื่องจะทำกับเจนกินส์ บิลด์สร้างสิ่งประดิษฐ์ 3 แบบที่แตกต่างกัน: ไฟล์สงคราม ซิปพร้อมโครงร่าง ซิปพร้อมรูปภาพ จนถึงตอนนี้ดีมาก แต่ตอนนี้ฉันต้องเขียนสคริปต์การปรับใช้ซึ่งควรจะ: ปรับใช้ war (ส่วนที่ 1) กับ tomcat ที่รันที่เซิร์ฟเวอร์ 1 วางส่วนที่2ที่เซิร์ฟเวอร์ 1ในไดเร็กทอรีเฉพาะ วางส่วนที่3ที่เซิร์ฟเวอร์ 2ในไดเร็กทอรีเฉพาะ ดังนั้นฉันจึงได้พูดคุยกับเพื่อนร่วมงานของฉันและเขาบอกว่าเราควรสร้างสิ่งประดิษฐ์ (บางทีdeploy.xml ) ที่ปรับใช้สิ่งประดิษฐ์เหล่านี้เมื่อวางไว้ที่เซิร์ฟเวอร์ที่ถูกต้อง ดังนั้นจะมีสคริปต์อื่นที่จะ: ดาวน์โหลดสิ่งประดิษฐ์เจนกินส์ scp ไปยังแต่ละเซิร์ฟเวอร์และวาง deploy.xml ที่นั่น เรียกใช้ deploy.xml แบบรีโมต สิ่งที่ทำให้ฉันรู้สึกไม่สบายใจเล็กน้อยคือการมี deploy.xml เป็นงานสร้าง แรงจูงใจที่อยู่เบื้องหลังสิ่งนี้จะทำให้สามารถปรับใช้โดยไม่จำเป็นต้องเข้าถึงคลังเก็บ VCS ดังนั้นงานสร้างจะต้องมีในตัวเองกล่าวคืองานสร้างใด ๆ ที่สามารถเข้าสู่การผลิตได้เฉพาะสิ่งที่เจนกินส์สร้างขึ้น ควรวางสคริปต์การปรับใช้ไว้ที่ใด พวกเขาควรจะเพียงที่ …

4
คุณจะจัดการความสามารถในการขยายในระบบหลายผู้เช่าของคุณได้อย่างไร?
ตอนนี้ฉันมีผลิตภัณฑ์หลายผู้เช่าบนเว็บที่ใหญ่และไม่นานฉันก็เห็นว่าจะมีการปรับแต่งมากมายที่เฉพาะเจาะจงของผู้เช่า เขตข้อมูลพิเศษที่นี่หรือที่นั่นอาจเป็นหน้าพิเศษหรือตรรกะเพิ่มเติมบางส่วนที่อยู่ตรงกลางของเวิร์กโฟลว์ - สิ่งนั้น การปรับแต่งเหล่านี้บางส่วนสามารถรีดเข้าสู่ผลิตภัณฑ์หลักและนั่นยอดเยี่ยม บางคนมีความเฉพาะเจาะจงสูงและจะเข้าไปในทางของคนอื่น ฉันมีความคิดเล็กน้อยในการจัดการสิ่งนี้ แต่ดูเหมือนว่าจะไม่มีใครที่จะปรับขนาดได้ โซลูชันที่ชัดเจนคือการแนะนำการตั้งค่าระดับไคลเอ็นต์มากมายทำให้สามารถเปิดใช้งาน 'คุณสมบัติ' ที่หลากหลายบนพื้นฐานต่อลูกค้า ข้อเสียของสิ่งนั้นคือความซับซ้อนและความยุ่งเหยิง คุณสามารถแนะนำการตั้งค่าจำนวนมากอย่างแท้จริงและเมื่อเวลาผ่านไปหลายประเภทของตรรกะ (งานนำเสนอ, ธุรกิจ) สามารถหลีกเลี่ยงได้ จากนั้นก็มีปัญหาเกี่ยวกับเขตข้อมูลเฉพาะของลูกค้าซึ่งต้องการสิ่งที่สะอาดกว่าเพียงเพิ่มเขตข้อมูลที่ไม่มีค่าลงในตารางที่มีอยู่ แล้วผู้คนกำลังทำอะไรเพื่อจัดการสิ่งนี้ ดูเหมือนว่า Force.com จะเป็นผู้เชี่ยวชาญด้านการเพิ่มความสามารถ เห็นได้ชัดว่าพวกเขาได้สร้างแพลตฟอร์มจากพื้นดินขึ้นมาซึ่งสามารถขยายได้อย่างมาก คุณสามารถเพิ่มเกือบทุกอย่างด้วย UI บนเว็บของพวกเขา FogBugz ทำสิ่งที่คล้ายกันซึ่งพวกเขาสร้างรูปแบบปลั๊กอินที่มีประสิทธิภาพซึ่งคิดว่าอาจได้รับแรงบันดาลใจจากแรงจริง ฉันรู้ว่าพวกเขาใช้เวลาและเงินจำนวนมากกับมันและถ้าฉันไม่เข้าใจผิดความตั้งใจที่จะใช้มันเพื่อการพัฒนาผลิตภัณฑ์ในอนาคต ฟังดูเหมือนเป็นสิ่งที่ฉันอยากจะสร้าง แต่อาจไม่ควร :) การลงทุนครั้งใหญ่ในสถาปัตยกรรมแบบเสียบปลั๊กเป็นหนทางเดียวที่จะไปได้หรือไม่? คุณจัดการกับปัญหาเหล่านี้อย่างไรและคุณเห็นผลลัพธ์แบบใด แก้ไข:ดูเหมือนว่า FogBugz จัดการปัญหาด้วยการสร้างแพลตฟอร์มที่แข็งแกร่งพอสมควรแล้วใช้สิ่งนั้นเพื่อรวบรวมหน้าจอของพวกเขา เมื่อต้องการขยายให้คุณสร้าง DLL ที่มีคลาสที่ใช้อินเทอร์เฟซเช่น ISearchScreenGridColumn และกลายเป็นโมดูล ฉันแน่ใจว่ามันแพงอย่างมากในการสร้างเนื่องจากพวกเขามี devs จำนวนมากและพวกเขาทำงานกันเป็นเวลาหลายเดือนบวกกับพื้นที่ผิวของพวกเขาอาจจะ 5% ของขนาดแอปพลิเคชันของฉัน ตอนนี้ฉันสงสัยอย่างจริงจังว่า Force.com เป็นวิธีที่เหมาะสมในการจัดการกับปัญหานี้หรือไม่ และฉันก็เป็นผู้ชายแกนแข็งของ …

3
เราสามารถคาดหวังประสิทธิภาพอะไรได้บ้างจาก std :: string's c_str () เวลาคงที่เสมอหรือไม่
ฉันได้ทำการปรับปรุงบางอย่างที่จำเป็นเมื่อเร็ว ๆ นี้ สิ่งหนึ่งที่ฉันทำคือการเปลี่ยน ostringstreams -> sprintfs ฉันกำลังรีบพวงของ std :: strings ไปที่ array style ac, ala char foo[500]; sprintf(foo, "%s+%s", str1.c_str(), str2.c_str()); ปรากฎว่าการใช้งาน std :: string :: c_str () ของ Microsoft นั้นทำงานในเวลาคงที่ (มันแค่คืนค่าตัวชี้ภายใน) ปรากฏว่าlibstdc ++ ไม่เหมือนกัน ฉันรู้ว่ามาตรฐานไม่รับประกันสำหรับ c_str แต่มันยากที่จะจินตนาการถึงวิธีการทำเช่นนี้อีก ตัวอย่างเช่นหากพวกเขาคัดลอกไปยังหน่วยความจำพวกเขาอาจต้องจัดสรรหน่วยความจำสำหรับบัฟเฟอร์ (ปล่อยให้มันขึ้นอยู่กับผู้เรียกที่จะทำลายมัน - ไม่ใช่ส่วนหนึ่งของสัญญา STL) หรือพวกเขาจะต้องคัดลอกไปยังคงที่ภายใน บัฟเฟอร์ (อาจไม่ใช่ threadsafe และคุณไม่มีการรับประกันตลอดอายุการใช้งาน) ดังนั้นเพียงแค่คืนค่าพอยน์เตอร์ไปยังสตริงที่สิ้นสุดด้วยค่า …

6
มันเป็นการดีที่จะทำลายความมุ่งมั่นระดับกลางตราบใดที่ความมุ่งมั่นขั้นสุดท้ายในงานผลักดันใด ๆ ?
ที่เกี่ยวข้อง: คอมไพล์ทุกคนควรออกจากโครงการในสถานะการทำงานหรือไม่ สมมติว่าฉันทำสิ่งต่อไปนี้ในพื้นที่: ปรับเปลี่ยนสกีมาฐานข้อมูลทำให้แอปพลิเคชันหยุดทำงาน อัปเดตแอปพลิเคชันเพื่อให้เข้ากันได้กับสคีมาฐานข้อมูลอีกครั้ง ตราบใดที่ฉันผลักทั้งสองกระทำmasterยังคงอยู่ในสภาพการทำงาน อย่างไรก็ตามเวอร์ชันทางประวัติศาสตร์เสีย ฉันรู้ว่าฉันสามารถใช้git rebase -iในการสควอชคอมมิชชันด้วยกัน อย่างไรก็ตามการกระทำที่เกิดขึ้นจะมีขนาดใหญ่และอธิบายน้อยกว่า หากฉันต้องการค้นหาประวัติการส่งมอบเพื่อหาสาเหตุที่ฉันเปลี่ยนบางสิ่งบางอย่างฉันควรค้นหาคำสั่งดั้งเดิมที่แสดงสิ่งที่ฉันทำและทำไม คำถามของฉันคือ: มีใครประสบปัญหาบ้างหรือไม่เนื่องจากความผูกพันทางประวัติศาสตร์ที่แตกสลายในเจ้านาย? ถ้าเป็นเช่นนั้นมีวิธีง่ายๆในการหลีกเลี่ยงปัญหาดังกล่าวหรือไม่โดยไม่ละทิ้งบุคคลที่ส่งข้อความและเปลี่ยนแปลง?
13 git  dvcs 

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

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

5
Java เป็นตัวเลือกที่ดีสำหรับเกมข้ามแพลตฟอร์มหรือไม่? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา ฉันต้องการสร้างเกมใน Java และต้องการให้ทำงานบน Windows, Linux และ Mac ฉันค่อนข้างมั่นใจว่า C # เป็นตัวเลือกที่ไม่ดีสำหรับเรื่องนี้และฉันไม่มีประสบการณ์เพียงพอใน C หรือ C ++ ฉันต้องการอยู่ห่างจาก Flash ดังนั้น Java เป็นตัวเลือกที่ดีสำหรับฉันหรือไม่ ส่วนใหญ่ฉันใช้ C # และคิดว่า Java คล้ายกันดังนั้นฉันคิดว่ามันจะไม่เป็นการยากที่จะเรียนรู้ แต่มันเร็วพอหรือไม่? มีภาษาที่เหมาะกับความต้องการของฉันมากกว่า Java หรือไม่?

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