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

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

1
ฟังก์ชั่นการโต้ตอบ / การเขียนโปรแกรมเชิงสัมพันธ์ - มีความแตกต่างหรือไม่?
ฉันใช้Reactive Cocoa (โดย GitHub) ซึ่งเป็นAPI การเขียนโปรแกรมเชิงโต้ตอบสำหรับใช้กับห้องสมุด Cocoa มาระยะหนึ่งแล้ว แต่เพิ่งอ่าน"Out of the Tar Pit"กระดาษที่นำเสนอแนวคิดเบื้องหลัง และฉันก็สับสนเล็กน้อย บทความนำเสนอ (ตามที่ฉันเข้าใจ) การเขียนโปรแกรมเชิงสัมพันธ์เชิงหน้าที่ซึ่งความสัมพันธ์ระหว่างข้อมูลถูกสร้างขึ้นด้วยเงื่อนไขที่ควรมีการบังคับใช้โดยระบบ FRP เพื่อลดจำนวนตรรกะและสถานะ 'อุบัติเหตุ' ที่จำเป็น คำถามของฉันคือแนวคิดทั้งสองนี้คือ FR (eactive) P และ FR (elational) P โดยพื้นฐานแล้วเป็นสิ่งเดียวกัน (โดยที่ก่อนหน้านี้เพิ่งจะนำไปใช้หลัง) หรือมีความแตกต่างที่สำคัญระหว่างทั้งสองหรือไม่ น่าเสียดายที่ในขณะนี้ความรู้เกี่ยวกับพื้นที่ของฉันไม่ดีพอสำหรับฉันที่จะแยกแยะพวกเขาให้มากพอ หากมีความแตกต่างดูเหมือนว่าจะเป็นสิ่งที่ต้องทำด้วยชื่อแนะนำเพื่อตอบสนองต่อการเปลี่ยนแปลงของข้อมูล แน่นอนว่า Reactive Cocoa (และ Rx ใน C #) มีแนวคิดในการสร้างสัญญาณที่ถูกกระตุ้นจากการเปลี่ยนแปลงข้อมูลและสามารถใช้ในการปรับเปลี่ยนค่าอย่างต่อเนื่องตลอดเวลา นี่คือความแตกต่าง? ถ้าไม่เป็นอะไร (โปรดแก้ตัวการติดแท็กที่ไม่ดีฉันไม่สามารถหาแท็กที่เกี่ยวข้องและยังไม่สามารถสร้างได้ - โปรดอัปเดตแท็กเป็นสิ่งที่เหมาะสมกว่าถ้าคุณสามารถทำได้)

4
มีภาษาสคริปต์เว็บแบบคงที่หรือไม่ [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน2 ปีที่ผ่านมา ดูเหมือนจะมีสองวิธีที่สำคัญในการตั้งค่าแบ็กเอนด์เว็บเซิร์ฟเวอร์ คุณสามารถใช้ LAMP stack โดยใช้โค้ดฝั่งเซิร์ฟเวอร์ในบางอย่างเช่น PHP หรือ Python (หรือ Ruby หรือ JavaScript ซึ่งไม่ได้เริ่มต้นด้วย P) ภาษาสคริปต์เหล่านี้มักจะถูกพิมพ์แบบไดนามิกโดยมีข้อเสียทั้งหมดใน ประสิทธิภาพความถูกต้องและการบำรุงรักษาที่ภาษาที่พิมพ์แบบไดนามิกนำมาใช้ แต่มันง่ายในการอัปเดตเซิร์ฟเวอร์เพราะตรรกะการสร้างหน้าทั้งหมดจะถูกเก็บไว้ในสคริปต์ภายนอก รูปแบบสถาปัตยกรรมที่สำคัญอื่น ๆ ที่ใช้กันอย่างแพร่หลายคือ ASP.NET ซึ่งตรรกะการสร้างหน้าถูกเขียนในโค้ดที่คอมไพล์แล้ว สิ่งนี้มีแนวโน้มที่จะใช้ภาษาที่พิมพ์แบบคงที่ดังนั้นคุณจะได้รับรหัสที่มีประโยชน์ของคอมไพเลอร์ แต่ตรรกะการสร้างหน้าทั้งหมดจะถูกรวบรวมไว้ในเซิร์ฟเวอร์ซึ่งหมายความว่าถ้าคุณต้องการเปลี่ยนแปลงบางสิ่งคุณต้องทำให้เซิร์ฟเวอร์ล้มเหลว แทนที่ด้วยบิลด์ใหม่ นั่นทำให้ฉันประหลาดใจ มีภาษาสคริปต์ฝั่งเซิร์ฟเวอร์ที่ใช้การพิมพ์แบบคงที่เพื่อสิ่งที่ดีที่สุดของทั้งสองโลกหรือไม่?

1
Google Blink (WebKit fork ใหม่): ความหมายของ“ การย้าย DOM เข้าสู่ Javascript” หรือไม่
จากบล็อกกะพริบตา : ในที่สุดเราต้องการสำรวจแนวคิดที่กว้างขึ้นเช่นการย้าย Document Object Model (DOM) ทั้งหมดไปยัง JavaScript สิ่งนี้หมายความว่า? หมายความว่า DOM ของ WebKit ไม่ได้เข้ารหัสใน JavaScript แต่เป็นภาษาอื่นบ้างไหม หมายความว่าพวกเขาต้องการเปิดเผย accessors สาธารณะเพิ่มเติมให้ DOM หรือไม่ หรืออะไร?
12 javascript  dom 

5
เวลาที่ต้องใช้ในการเริ่มเขียนโค้ดที่ บริษัท ใหม่ [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้มีแนวโน้มที่จะเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันเป็นวิศวกรซอฟต์แวร์เป็นเวลา 4 ปีและฉันเพิ่งเปลี่ยน บริษัท ของฉันเป็นครั้งแรก บริษัท ทำงานกับการเขียนโปรแกรมคู่และใช้เวลา 3 วันฉันไม่สามารถแม้แต่เขียนรหัสบรรทัดเดียวได้ มันช่างน่าหงุดหงิดเหลือเกินสำหรับฉันเพราะฉันทำงานที่ บริษัท ก่อนหน้านี้มาก codebase มีขนาดใหญ่พวกเขาใช้ภาษา / เครื่องมือ 5-6 ภาษาที่ฉันไม่คุ้นเคยเช่น rspec, haml, jasmine และอื่น ๆ แต่ถึงกระนั้นฉันรู้สึกแย่ สุดสัปดาห์นี้ฉันสร้าง UML เพื่อทำความเข้าใจแอปพลิเคชันให้ดีขึ้น แต่ถึงกระนั้นฉันก็ยังคาดเดาว่าฉันจะไม่สามารถเขียนโค้ดในปริมาณที่เหมาะสมในสัปดาห์นี้ เป็นเรื่องปกติหรือไม่ ประสบการณ์ของคุณเมื่อคุณเปลี่ยนงานของคุณและดำดิ่งสู่ codebase ขนาดใหญ่ที่เขียนด้วยภาษา / ไลบรารีที่คุณไม่คุ้นเคย แน่นอนว่าฉันไม่ได้ขอเวลาที่แน่นอนแต่ประสบการณ์ที่ผ่านมาหรือสิ่งต่าง ๆ ที่จะทำให้กระบวนการดีขึ้น แต่ฉันได้อ่านคำถามและคำตอบด้านล่างแล้ว คุณจะเจาะฐานรหัสขนาดใหญ่ได้อย่างไร /programming/215076/whats-the-best-way-to-become-familiar-with-a-large-codebase /programming/214605/the-best-way-to-familiarize-yourself-with-an-inherited-codebase UPDATE …

5
หากต้องการรวมเวอร์ชัน git เป็นหมายเลขบิลด์หรือไม่
เพื่อนร่วมงานและฉันได้ผลัดกันโต้วาที / อภิปรายปัญหา / ข้อดีของการรวมรุ่นที่ได้มาจากที่เก็บ git ปัจจุบันในรหัสของเราเมื่อใดก็ตามที่มันสร้าง เราคิดว่าข้อดีคือ: ไม่จำเป็นต้องกังวลเกี่ยวกับข้อผิดพลาดของมนุษย์ในการอัปเดตหมายเลขเวอร์ชัน การตรวจสอบย้อนกลับระหว่างสิ่งที่เราพบในอุปกรณ์และซอร์สโค้ดที่ได้มาจาก ปัญหาที่เกิดขึ้น (สำหรับเรา) รวมถึง: ระบบสร้าง IDE ที่ได้รับ (เช่น MPLABX) สามารถทำให้ยากที่จะทราบว่าจะใส่ hooks ประเภทนี้ไว้ในที่ใด (และมันสามารถจบลงด้วยการทำวิเศษสุด ๆ ในตอนท้าย) ทำงานได้มากขึ้นในการรวมสิ่งนี้เข้ากับ build สคริปต์ / makefiles การเชื่อมต่อกับแนวทางการสร้างเฉพาะ (เช่นถ้าบุคคลหนึ่งสร้างด้วย XCode และ MPLABX อื่น ๆ ) อาจสร้างความประหลาดใจแบบดาวน์สตรีม ดังนั้นเราอยากรู้ว่าที่คนอื่นมีที่ดินในการอภิปรายนี้ มันง่ายมากที่การอภิปรายจะกลายเป็นเรื่องเล็ก มีผู้คนมากมายที่ยืนหยัดในระบบอัตโนมัติตั้งแต่ต้นจนจบแขวนจำนวนงานที่ต้องทำล่วงหน้าและการมีเพศสัมพันธ์ที่สร้างขึ้น และมีอีกหลายคนที่อยู่อีกด้านหนึ่งของการถกเถียงซึ่งเพิ่งทำสิ่งที่ง่ายที่สุดที่ทำงานและอยู่กับความเสี่ยง มีคำตอบที่ให้เหตุผลที่ดีที่สุดที่จะลงจอดบน?
12 c  git  builds  build-system 

2
คลาส, enums และเอนทิตีอื่น ๆ ควรอยู่ในไฟล์แยกกันหรือไม่?
หัวหน้าทีมของ บริษัท ของฉัน \ สถาปนิกระบุว่าโครงการขนาดใหญ่นั้นง่ายต่อการเข้าใจหากวางเอนทิตีที่เชื่อมต่อด้วยตรรกะไว้ในไฟล์. cs หนึ่งไฟล์ ฉันพูด: "โครงสร้างทั้งหมดของลอจิกและอินเตอร์เฟสและคลาสสามารถเห็นได้ในที่เดียวนี่คืออาร์กิวเมนต์ที่ไม่สามารถหักล้างได้เมื่อต้องการดูสิ่งเดียวกัน แต่ด้วยไฟล์จำนวนมากคุณต้องใช้เครื่องมือ ไดอะแกรม R # สำหรับการนำทาง ฯลฯ " "ตามทฤษฎีที่ไม่ดีฉันอาจกรีดร้องว่ากองทัพของไฟล์ที่แยกกันนั้นเจ๋ง แต่เมื่อพูดถึงการเปลี่ยนแปลงโค้ดที่มีอยู่โดยเฉพาะอย่างยิ่งถ้าคุณไม่ใช่นักเขียนของรหัสนี้มันยากมากที่จะเข้าใจไฟล์ที่กระจัดกระจาย ดังนั้นในฟอรัมคุณสามารถเขียนว่า "หนึ่ง enum - one file" แต่ในทางปฏิบัติไม่ควรใช้วิธีนี้ " "... สำหรับการแยกรหัสฐานระหว่างนักพัฒนาทุกวันนี้มันไม่ใช่ปัญหาในการแก้ไขไฟล์เดียวกันพร้อม ๆ กันการผสานไม่ใช่ปัญหา" ฉันได้ยินและอ่านหลาย ๆ ครั้งที่เราต้องสร้างหนึ่งไฟล์. cs ต่อ enum คลาสและอื่น ๆ และนี่คือวิธีปฏิบัติที่ดีที่สุด แต่ฉันไม่สามารถโน้มน้าวเขาได้ เขาบอกว่าเขาไม่เชื่อใจโปรแกรมเมอร์ที่รู้จักกันดีเช่น Jon Skeet ความเห็นของ Skeet ในหัวข้อนี้เป็นที่ที่ดีที่สุดในการค้นหาประเภท enum อยู่ที่ไหน คุณคิดอย่างไร? มีปัญหาจริงเหรอ? …

2
ทำไม Java ไม่สนับสนุนการสืบทอดส่วนตัว / ที่ป้องกันเช่น C ++ [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้มีแนวโน้มที่จะเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ในขณะที่สืบทอดคลาสใน C ++ ผู้ใช้สามารถระบุตัวระบุการเข้าถึงเช่น class Base { public int mem1; protected in mem2; }; class Derived1 : **private** Base { // mem1 will be private here. // mem2 will be private here. }; class Derived2 : **protected** Base { // mem1 will …

2
อะไรคือความแตกต่างในทางปฏิบัติระหว่างรูปแบบของการฉีดพึ่งพา?
ฉันยังใหม่กับการฉีดแบบพึ่งพาและฉันมีคำถามสองสามข้อเกี่ยวกับสไตล์ที่ฉันควรใช้ในแอปพลิเคชันของฉัน ฉันเพิ่งอ่านInversion of Control Containers และรูปแบบการพึ่งพาการฉีดของ Martin Fowler แต่ฉันไม่สามารถรับความแตกต่างระหว่าง Constructor, Setter และ Interface Injection ได้ สำหรับฉันแล้วเหตุผลที่ใช้อีกอันหนึ่งเป็นเพียงเรื่องของการล้างโค้ดและ / หรือความชัดเจน อะไรคือความแตกต่าง? มีข้อดีหรือข้อเสียที่แข็งแกร่งในการใช้อย่างใดอย่างหนึ่งมากกว่าหรือเป็นเพียงสิ่งที่ฉันได้กล่าวก่อนหน้านี้? ในความคิดของการฉีดคอนสตรัคเป็นที่ใช้งานง่ายที่สุดของทั้งหมดเช่นเดียวกับการฉีดอินเตอร์เฟซเป็นอย่างน้อย ในอีกทางหนึ่งการฉีดเซทเทอร์เป็นระยะกลาง แต่คุณควรจะสามารถเปลี่ยนอินสแตนซ์ของออบเจ็กต์การพึ่งพาที่คุณฉีดตอนแรกได้หรือไม่ รูปแบบการฉีดแบบนี้รับประกันได้ว่าวัตถุที่ต้องการการพึ่งพานั้นจะต้องทำการฉีดหรือไม่? ฉันไม่เชื่อ แต่โปรดแก้ไขให้ถูกต้องถ้าฉันผิด

3
เริ่มให้คำปรึกษาในขณะที่ลูกจ้าง - ความขัดแย้งทางผลประโยชน์ [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน4 ปีที่แล้ว ครั้งแรกของทั้งหมดผมไม่ได้หลังจากที่คำแนะนำด้านกฎหมาย นี่คือ TL เล็กน้อย DR แต่ฉันมีบทสรุปที่ด้านล่างฉันอธิบายทุกอย่างเพื่อให้ผู้คนสามารถให้คำแนะนำที่ชาญฉลาดได้ สถานการณ์ ฉันต้องอธิบายสถานการณ์ปัจจุบันของฉันเพื่ออธิบายว่าทำไมฉันถึงตัดสินใจไปตามเส้นทางที่ฉันมี ฉันเพิ่งถูกขอให้หางานใหม่เนื่องจากเศรษฐกิจในท้องถิ่นกำลังดิ้นรน ฉันไม่ได้ถูกไล่ออก แต่สาเหตุเกิดจากนายจ้างปัจจุบันของฉันไม่สามารถที่จะจ้างฉันเต็มเวลาได้อีก ฉันมองหางานอยู่พักหนึ่ง แต่มีงานน้อยมากโดยเฉพาะอย่างยิ่งในระดับที่ฉันอยู่และฉันไม่ต้องการงานอื่นที่ฉันจะไม่เจอกับความท้าทายหรือความสนุก ตำแหน่งปัจจุบันของฉันเห็นว่าฉันทำงานเป็นสถาปนิกและผู้จัดการซอฟต์แวร์ งานส่วนใหญ่เป็นงานภายใน แต่ฉันทำหน้าที่ให้คำปรึกษากับนายจ้างของฉัน การตัดสินใจของฉัน ฉันตัดสินใจออกไปด้วยตัวเองในฐานะที่ปรึกษา / ผู้รับเหมา ฉันมีงานที่ค่อนข้างเป็นธรรมอยู่แล้ว แต่ในขณะที่ฉันสร้างธุรกิจของฉันฉันต้องทำเงินเพื่อสนับสนุนครอบครัวของฉัน ผลลัพธ์ในที่สุดคือการสร้างรายได้จากผลิตภัณฑ์บางอย่าง แต่การพัฒนาผลิตภัณฑ์ต้องใช้เวลา ปัญหา นายจ้างปัจจุบันของฉันเสนอให้ฉันจ้างงานพาร์ทไทม์กับพวกเขา ส่วนใหญ่เป็นการค้าปลีกแม้ว่าเนื่องจากการจ้างงานของฉันได้ย้ายไปทำงานด้านเว็บ (ส่วนใหญ่เป็นเว็บไซต์ที่ใช้ CMS) และในระดับที่น้อยกว่าการเขียนโปรแกรมซึ่งเป็นสิ่งที่ฉันเข้ามา โครงการภายใน นอกจากนี้ยังมีธุรกิจสนับสนุนด้านไอทีที่มีขนาดใหญ่มาก การพัฒนาซอฟต์แวร์เป็นส่วนใหญ่แม้ว่าจะมีการมุ่งเน้นไปที่การพัฒนาเว็บขั้นพื้นฐาน การพัฒนาซอฟต์แวร์ส่วนใหญ่จะหยุดเมื่อฉันออกจากถ้าไม่สมบูรณ์ ขัดผลประโยชน์ ถ้าฉันใช้เวลาส่วนหนึ่งฉันต้องมีสัญญาเป็นลายลักษณ์อักษรเกี่ยวกับความขัดแย้งทางผลประโยชน์ ฉันจะพบทนายความเพื่อขอคำแนะนำด้านกฎหมาย แต่ฉันจำเป็นต้องรู้ว่าต้องอนุญาตอะไรบ้าง TL; …

1
การทดสอบหน่วยใน Django
ฉันพยายามอย่างหนักที่จะเขียนการทดสอบหน่วยที่มีประสิทธิภาพสำหรับโครงการขนาดใหญ่ Django ฉันมีความครอบคลุมการทดสอบที่ดีพอสมควร แต่ฉันได้ตระหนักว่าการทดสอบที่ฉันเขียนคือการทดสอบการรวม / การยอมรับไม่ใช่การทดสอบหน่วยเลยและฉันมีส่วนสำคัญของแอปพลิเคชันที่ไม่ได้รับการทดสอบอย่างมีประสิทธิภาพ ฉันต้องการแก้ไขโดยเร็วที่สุดนี้ นี่คือปัญหาของฉัน สคีมาของฉันนั้นมีความสัมพันธ์ลึกซึ้งและมุ่งเน้นไปที่เวลาอย่างมากทำให้วัตถุต้นแบบของฉันมีความสัมพันธ์ภายในสูงและมีสถานะเป็นจำนวนมาก แบบสอบถามวิธีการแบบจำลองของฉันจำนวนมากขึ้นอยู่กับช่วงเวลาและฉันมีจำนวนมากauto_now_addเกิดขึ้นในเขตข้อมูลที่ประทับเวลา ดังนั้นลองใช้วิธีที่มีลักษณะเช่นนี้: def summary(self, startTime=None, endTime=None): # ... logic to assign a proper start and end time # if none was provided, probably using datetime.now() objects = self.related_model_set.manager_method.filter(...) return sum(object.key_method(startTime, endTime) for object in objects) วิธีใดวิธีหนึ่งในการทดสอบบางอย่างเช่นนี้ ที่นี่ฉันอยู่ไกล เกิดขึ้นกับฉันว่าวัตถุประสงค์การทดสอบหน่วยควรได้รับพฤติกรรมเยาะเย้ยby key_methodบนข้อโต้แย้งของมันคือการsummaryกรอง / รวมอย่างถูกต้องเพื่อให้ได้ผลลัพธ์ที่ถูกต้อง? …

1
มารยาทที่เหมาะสมสำหรับการปล่อยการเขียนที่สมบูรณ์ของโครงการที่มีอยู่คืออะไร?
ฉันใหม่สำหรับโลก opensource โครงการที่ฉันกำลังทำงานอยู่กับ Github (สำหรับการอ้างอิงเท่านั้น) โครงการที่ฉันกำลังดำเนินการอยู่เป็นปลั๊กอินสำหรับ Plex Media Server ฉันวางแผนที่จะส่งปลั๊กอินของฉันไปที่ Plex เพื่อที่จะรวมอยู่ใน "app store" ของพวกเขา ตอนนี้คำถามของฉัน เมื่อฉันเริ่มแรกฉันพบปลั๊กอินที่ถูกทอดทิ้งแบบเก่าที่ทำในสิ่งที่ฉันต้องการ แต่ไม่ค่อยดี ฉันเริ่มต้นด้วยการมีส่วนร่วมในการซื้อคืน ฉันได้ทำงานร่วมกันโดยทันทีที่มีสิทธิ์เต็มรูปแบบในการซื้อคืนเนื่องจากเจ้าของปัจจุบันบอกว่าเขายุ่งเกินกว่าที่จะยุ่งกับมันอีกต่อไป อย่างไรก็ตามในขณะที่ฉันเริ่มขุดลึกลงไปในรหัสฉันรู้ว่ามันไร้ประโยชน์ ฐานรหัสที่มีอยู่แย่มากและไม่มีวิธีแก้ไขที่มีประสิทธิภาพ ฉันลงเอยด้วยการเริ่มจากศูนย์ รหัสเดียวที่ฉันใช้ในปลั๊กอินใหม่ของฉันคือรหัสที่ฉันยืนยันตอนแรก ตอนนี้โครงการพร้อมที่จะเปิดตัว อย่างไรก็ตามฉันไม่แน่ใจว่าจะทำสิ่งนี้ได้อย่างไร ฉันเห็นตัวเลือกของฉันดังนี้: สร้าง repo ใหม่และลืมเกี่ยวกับที่มีอยู่เดิม ฉันไม่แน่ใจว่าฉันควรพูดถึง repo ก่อนหน้าและหรือผู้มีส่วนร่วม ฉันไม่ได้ใช้รหัส / แหล่งข้อมูลใด ๆ และได้สร้างฐานรหัสใหม่ทั้งหมด ในขณะที่ปลั๊กอินทำสิ่งเดียวกันกับที่เคยทำมา แต่มันทำในรูปแบบใหม่ทั้งหมดและมีประสิทธิภาพมากขึ้น ฉันแยก repo ที่มีอยู่แล้วลบรหัสที่มีอยู่และส่งรหัสใหม่ของฉัน ฉันใหม่กับ Git จริงๆฉันไม่แน่ใจว่ามันจะเป็นไปได้หรือไม่ ฉันยอมรับการเปลี่ยนแปลงของฉันกับ repo ที่มีอยู่และดูว่าผู้ให้ข้อมูลปัจจุบันต้องพูดอย่างไร ในสามตัวเลือกฉันเอนตัวไปทางแรก …

2
ควร "เลิกทำการพิมพ์" อย่างไร
ฉันกำลังใช้งานแอป Java ที่มี Undo / Redo stack ฉันสังเกตเห็นว่าแอพบางตัว (เช่น TextEdit บน Mac OS X) ให้คุณเลือก "เลิกทำการพิมพ์" จากเมนูแก้ไขหลังจากพิมพ์ข้อความ ฉันต้องการนำสิ่งเหล่านั้นไปใช้ในแอพของฉันด้วย แต่ฉันมีแนวทางในการค้นหาเวลาที่ยากลำบากจริงๆเกี่ยวกับวิธีการทำงานของมัน ด้วยการทดลองและข้อผิดพลาดการคาดเดาที่ดีที่สุดของฉันเกี่ยวกับวิธีการเลิกทำการพิมพ์ดีดของ TextEdit คือ: เมื่อผู้ใช้พิมพ์อักขระใหม่ (หรือพิมพ์คีย์ลบ) ให้รวมเข้าไปในรายการ Undo Typing ก่อนหน้าหากมีอักขระอยู่ที่ด้านบนสุดของ Undo stack ยกเว้นว่ามีเหตุการณ์ใดเหตุการณ์หนึ่งต่อไปนี้เกิดขึ้น สร้างรายการเลิกทำการพิมพ์ใหม่หลังจากผู้ใช้พิมพ์ต่อไปหลังจากไม่มีกิจกรรมใด ๆ เป็นเวลาอย่างน้อย 15 วินาที สร้างรายการ Undo Typing ใหม่ทุกครั้งหลังจากที่ผู้ใช้พิมพ์เป็นระยะเวลานานและเป็นไปตามเงื่อนไขบางประการ (ไม่ทราบว่าเป็นไปตามเวลาหรือตามจำนวนตัวอักษร) สร้างรายการเลิกทำพิมพ์ดีดใหม่เสมอเมื่อเลือกข้อความใด ๆ แล้วลบหรือเขียนทับ (เลือกข้อความไม่ทำการเปลี่ยนแปลงจากนั้นกลับไปที่จุดแทรกดั้งเดิมและพิมพ์ต่อเนื่องไม่ทำให้เกิดสิ่งนี้) ในทางปฏิบัติกลยุทธ์ของ Apple ดูเหมือนจะใช้งานได้ (อย่างน้อยมันก็ใช้ได้กับฉันเมื่อฉันพิมพ์) แต่ตามที่ระบุไว้ในจุดสุดท้ายฉันไม่สามารถเข้าใจกฎได้อย่างแท้จริง …

2
การใช้มาโคร "น่าจะเป็น" และ "ไม่น่า" เท่าไหร่มีมากเกินไป?
มาโครที่รู้จักกันในชื่อlikelyและunlikelyมาโครช่วยให้คอมไพเลอร์ทราบว่าifจะป้อนหรือข้าม การใช้มันจะส่งผลในการปรับปรุงประสิทธิภาพ (ค่อนข้างเล็กน้อย) ฉันเริ่มใช้มันเมื่อไม่นานมานี้และฉันไม่แน่ใจว่าควรใช้คำใบ้ดังกล่าวบ่อยเพียงใด ฉันกำลังใช้กับการตรวจสอบข้อผิดพลาดifs unlikelyซึ่งมักจะถูกทำเครื่องหมายเป็น ตัวอย่างเช่น: mem = malloc(size); if (unlikely(mem == NULL)) goto exit_no_mem; ดูเหมือนว่าจะใช้ได้ แต่การตรวจสอบข้อผิดพลาดifเกิดขึ้นบ่อยครั้งดังนั้นจึงใช้มาโครดังกล่าว คำถามของฉันคือมันมีมากเกินไปlikelyและunlikelyแมโครในทุกการตรวจสอบข้อผิดพลาดif? ในขณะที่เราอยู่ที่นี่พวกเขามักจะใช้ที่อื่นที่ไหน? ในการใช้งานปัจจุบันของฉันมันอยู่ในไลบรารีที่ทำให้เกิดนามธรรมจากระบบย่อยเรียลไทม์ดังนั้นโปรแกรมจะกลายเป็นแบบพกพาระหว่าง RTAI, QNX และอื่น ๆ ที่กล่าวว่าฟังก์ชั่นส่วนใหญ่ค่อนข้างเล็กและเรียกฟังก์ชั่นอื่น ๆ หนึ่งหรือสองโดยตรง หลายคนมีstatic inlineฟังก์ชั่น อย่างแรกเลยไม่ใช่แอพพลิเคชั่นที่ฉันสามารถโพรไฟล์ได้ มันไม่มีเหตุผลที่จะ "ระบุคอขวด" เนื่องจากเป็นห้องสมุดไม่ใช่แอปพลิเคชันแบบสแตนด์อโลน ประการที่สองมันคล้ายกับ "ฉันรู้ว่ามันไม่น่าเป็นไปได้ฉันก็จะบอกให้คอมไพเลอร์" ifฉันไม่แข็งขันพยายามที่จะเพิ่มประสิทธิภาพ

1
ความรับผิดชอบของ Build Script และ Build Server
ฉันต้องการคำชี้แจงเกี่ยวกับความรับผิดชอบของ Build Script และ Build Server ฉันอ่านบทความหลายเรื่องบนอินเทอร์เน็ตเกี่ยวกับการรวมและสร้าง รวมไปถึง รหัส F5 ไม่ใช่กระบวนการสร้าง The Build Server: Heart Monitor ของโครงการของคุณ งานสร้างรายวันเป็นเพื่อนของคุณ และฉันได้สนทนากับที่ปรึกษาเกี่ยวกับกระบวนการสร้างซอฟต์แวร์ของเรา เพราะเขามีประสบการณ์มากฉันเชื่อในคำพูดของเขา แต่ฉันถูกทิ้งให้สับสน ตามที่ฉันเข้าใจจากการวิจัยของฉัน (และโปรดแก้ไขให้ฉันที่นี่ด้วยเนื่องจากเป็นสิ่งที่ฉันถาม) อุดมคติควรเป็นดังนี้: ทุกโครงการมีสคริปต์การสร้าง สคริปต์นี้สร้างโครงการ สคริปต์นี้ทำให้แน่ใจว่ามีการสร้างการอ้างอิงก่อนหน้านี้ เนื่องจากการขึ้นต่อกันอาจเป็นโครงการอื่น ๆ ด้วยสคริปต์การสร้างของตัวเองลำดับชั้นที่มีลักษณะคล้ายต้นไม้เพิ่มขึ้น อาจมีสคริปต์สร้างชั้นนำที่สร้างโครงการและแอปพลิเคชันทั้งหมด อย่างไรก็ตามความรับผิดชอบของ Build Server คือ: ตรวจสอบพื้นที่เก็บข้อมูล ทริกเกอร์การสร้าง การทดสอบทริกเกอร์และเครื่องมือ QA อื่น ๆ ทำให้สิ่งประดิษฐ์พร้อมใช้งาน สิ่งนี้อาจถูกทริกเกอร์ด้วยตนเองทุกคืนหรือทุกครั้งที่มีการเปลี่ยนแปลงที่เก็บ วัตถุประสงค์ของที่ปรึกษาของฉันคือตามที่ฉันเข้าใจพวกเขาว่าหนึ่งสคริปต์สร้างเป็นวิธีที่ยืดหยุ่นและไม่สามารถบำรุงรักษาได้ (นอกเหนือจากความจริงที่ว่ามันจะใช้เวลานานมากจากการสร้างหนึ่งสำหรับฐานรหัสดั้งเดิมของเรา) นอกจากนี้ Build Server ควรรักษาการอ้างอิงเช่นการใช้การอ้างอิงแบบเก่าเมื่อสร้างล้มเหลวใหม่ และโดยเฉพาะอย่างยิ่งสำหรับAntมันเป็นเรื่องที่เป็นรูปธรรมไม่สามารถสร้างเทคโนโลยีที่แตกต่างกันทุกชนิดที่ใช้ในรหัสฐานและไม่สามารถรักษาความไว้วางใจได้ …

4
มีวิธีที่เหมาะสมในการสร้างรูปแบบไฟล์หรือไม่?
ฉันกำลังสร้างรูปแบบไฟล์ที่เป็นกรรมสิทธิ์สำหรับแอปพลิเคชันที่ฉันเขียนใน C #. NET เพื่อเก็บบันทึกข้อมูลและอาจลงสินทรัพย์โครงการสาย มีมาตรฐานในการทำสิ่งนี้ด้วยวิธีใด? ฉันแค่ไปที่Serializeวัตถุของฉันเป็นไบนารี่และสร้างส่วนหัวที่จะบอกวิธีแยกไฟล์ นี่เป็นวิธีที่ไม่ดีหรือไม่?

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