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

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

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

1
รูปแบบเพื่อแบ่งปันวัตถุระหว่าง API และแอปพลิเคชัน
ฉันมีข้อสงสัยอย่างมากเกี่ยวกับการออกแบบสำหรับเว็บแอปพลิเคชันของฉัน ฉันต้องการแยกตรรกะทางธุรกิจออกจากส่วนติดต่อดังนั้นฉันจึงสร้าง Web API ที่จัดการคำขอทั้งหมดไปยังฐานข้อมูล มันเป็น ASP.NET Web API พร้อม Entity framework และหน่วยการทำงานและรูปแบบพื้นที่เก็บข้อมูลทั่วไป จนถึงตอนนี้ทุกอย่างดี ปัญหา ที่ฉันต้องการความช่วยเหลือฉันไม่สามารถหาวิธีที่มีประสิทธิภาพในการแชร์ออบเจ็กต์ระหว่าง API และแอปพลิเคชัน ฉันไม่ต้องการที่จะทำให้เป็นลำดับวัตถุวัตถุโดยตรงฉันคิดว่ามันจะเป็นวิธีปฏิบัติที่ไม่ดีเพราะถ้ารูปแบบนิติบุคคลมีการเปลี่ยนแปลงฉันสามารถจบลงด้วยวัตถุขนาดใหญ่ที่ทำให้เป็นอันดับโดยไม่มีเหตุผล วิธีการใช้งานตอนนี้ เนื่องจากอินเทอร์เฟซของฉันคือ ASP.NET เว็บแอปพลิเคชันใน C # และ API ของฉันอยู่ใน C # ฉันจึงสร้างไลบรารีทั่วไปพร้อมคำจำกัดความของคลาสทั้งหมดของฉันที่ฉันต้องการแชร์ระหว่างพวกเขา ฉันรู้ว่าวิธีแก้ปัญหาจะไม่ทำงานเมื่อฉันจะพัฒนาแอพ Android ฉันจะต้องสร้างคลาสของฉันอีกครั้งใน Java แต่นั่นไม่ใช่ปัญหาที่ใหญ่ที่สุดของฉัน ปัญหาคือฉันรู้สึกว่าฉันมักจะแปลงวัตถุของฉัน ตัวอย่าง นี่คือตัวอย่างของกระบวนการทำงานของฉัน: ฉันเริ่มต้นด้วยโมเดลที่มีวัตถุทั้งหมดและบันทึกย่อข้อมูลสำหรับฟอร์มของฉันจากนั้นผู้ใช้จะโพสต์โมเดลนั้นไปยังคอนโทรลเลอร์ ในคอนโทรลเลอร์ฉันต้องแปลงโมเดลนี้เป็นคลาสในไลบรารีทั่วไปของฉันจากนั้นส่งวัตถุนั้นไปยัง API ของฉัน จากนั้นคอนโทรลเลอร์ใน API ของฉันจะรับสายและแปลงวัตถุนั้นเป็นวัตถุเอนทิตีเพื่ออัพเดทฐานข้อมูล ดังนั้นฉันมี 3 ชั้น โมเดลสำหรับมุมมองพร้อมหมายเหตุประกอบข้อมูลทั้งหมดสำหรับการตรวจสอบความถูกต้อง …

4
วิธีนี้บริสุทธิ์หรือไม่
ฉันมีวิธีการต่อไปนี้: public static IEnumerable<T> Apply<T>( [NotNull] this IEnumerable<T> source, [NotNull] Action<T> action) where T : class { source.CheckArgumentNull("source"); action.CheckArgumentNull("action"); return source.ApplyIterator(action); } private static IEnumerable<T> ApplyIterator<T>(this IEnumerable<T> source, Action<T> action) where T : class { foreach (var item in source) { action(item); yield return item; } } มันใช้การกระทำกับแต่ละรายการในลำดับก่อนที่จะส่งคืน ฉันสงสัยว่าฉันควรใช้แอPureททริบิวต์ (จากคำอธิบายประกอบ …

6
จำนวนครั้งที่สำคัญฉันไม่สามารถคิดเหตุผลที่มีวัตถุแทนคลาสแบบสแตติก วัตถุมีประโยชน์มากกว่าที่ฉันคิดหรือไม่ [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันเข้าใจแนวคิดของวัตถุและในฐานะที่เป็นโปรแกรมเมอร์ Java ฉันรู้สึกว่ากระบวนทัศน์ OO นั้นค่อนข้างเป็นธรรมชาติสำหรับฉันในทางปฏิบัติ อย่างไรก็ตามเมื่อเร็ว ๆ นี้ฉันพบว่าตัวเองกำลังคิด: รอสักครู่สิ่งที่เป็นประโยชน์จริงของการใช้วัตถุมากกว่าการใช้คลาสคงที่ (มีการห่อหุ้มที่เหมาะสมและการปฏิบัติ OO)? ฉันนึกถึงประโยชน์สองประการของการใช้วัตถุ (ทั้งสองอย่างมีความสำคัญและมีประสิทธิภาพ): ความแตกต่าง: ช่วยให้คุณสามารถสลับการทำงานแบบไดนามิกและยืดหยุ่นในช่วงรันไทม์ ยังอนุญาตให้เพิ่ม 'ส่วน' การทำงานใหม่และทางเลือกให้กับระบบได้อย่างง่ายดาย ตัวอย่างเช่นหากมีCarคลาสที่ออกแบบมาเพื่อทำงานกับEngineวัตถุและคุณต้องการเพิ่ม Engine ใหม่ให้กับระบบที่รถยนต์สามารถใช้ได้คุณสามารถสร้างEngineคลาสย่อยใหม่ และเพียงส่งวัตถุของคลาสนี้ไปยัง Carวัตถุโดยไม่ต้อง Carเปลี่ยนอะไรเกี่ยวกับ และคุณสามารถตัดสินใจได้ในระหว่างรันไทม์ ความสามารถในการ 'ผ่านฟังก์ชันการทำงานรอบ ๆ ': คุณสามารถส่งผ่านวัตถุรอบ ๆ ระบบแบบไดนามิก แต่มีข้อได้เปรียบเพิ่มเติมใด ๆ กับวัตถุที่อยู่เหนือคลาสแบบคงที่ บ่อยครั้งที่ฉันเพิ่ม 'ส่วน' ใหม่ลงในระบบฉันทำได้โดยการสร้างคลาสใหม่และสร้างอินสแตนซ์ของวัตถุจากมัน แต่เมื่อเร็ว ๆ นี้เมื่อฉันหยุดและคิดเกี่ยวกับมันฉันรู้ว่าชั้นคงที่จะทำเช่นเดียวกับวัตถุในสถานที่จำนวนมากที่ฉันมักจะใช้วัตถุ ตัวอย่างเช่นฉันกำลังทำงานเพื่อเพิ่มกลไกการบันทึก / …

2
Git ทางเลือกแทนชั้นวางใน TFS
ฉันใช้ git สำหรับโครงการส่วนบุคคลของฉันดังนั้นฉันไม่เคยพบปัญหาใด ๆ กับ Git แต่ฉันมีการพูดคุยที่ทำงานวันนี้และบางสิ่งที่ฉันไม่ได้คิด ใน TFS คุณสามารถจัดเก็บเซ็ตการแก้ไขของคุณลงในชั้นวางผู้พัฒนารายอื่นสามารถดูได้จากชั้นวางนี้ จากสิ่งที่ฉันเข้าใจใน GitHub คุณกำลังทำงานกับสำเนา Repo ในพื้นที่ของคุณ (อาจมีสาขาที่กำหนดเองสำหรับคุณสมบัติที่แตกต่างกัน) จากนั้นมาถึงจุดสำหรับการตรวจสอบเพื่อน คุณจะแบ่งปันการเปลี่ยนแปลงเฉพาะใน repo ในพื้นที่กับคนอื่นอย่างไร

2
การออกแบบแอปพลิเคชัน Javascript MVC (แคนวาส)
ฉันมีปัญหาในการเข้าใจวิธีการจัดโครงสร้าง / ออกแบบแอปพลิเคชั่นแคนวาสโดยใช้ MVC เหมือนกับแนวทางใน Javascript UI จะค่อนข้างลื่นไหลและมีชีวิตชีวาเกมค่อนข้างง่าย แต่เน้นหนักไปที่การทวีตและภาพเคลื่อนไหว ฉันเข้าใจวิธีการทำงานของ MVC ในหลักการ แต่ไม่ใช่ในทางปฏิบัติ ฉันเริ่มดื่มเหล้าจากที่นี่อ่านมาก ๆ และตอนนี้ฉันก็สับสนเหมือนตอนที่ฉันเริ่ม รายละเอียดบางอย่างเกี่ยวกับพื้นที่แอพพลิเคชัน: เฟรมเวิร์กเกมหลายหน้าจอ - เกมหลายเกมจะอยู่ภายในกรอบ "หน้าจอ" UI ทั่วไปนี้รวมถึง: การตั้งค่าข้อมูลเลือกความยากลำบากเมนูหลักเป็นต้น วิธีการป้อนข้อมูลหลายวิธี องค์ประกอบ UI ทั่วไปเช่นแถบเมนูด้านบนในบางหน้าจอ ความเป็นไปได้ของการใช้วิธีการแสดงผลที่แตกต่างกัน (canvas / DOM / webGL) ในตอนนี้ฉันมี AppModel, AppController และ AppView จากที่นี่ฉันวางแผนที่จะเพิ่ม "หน้าจอ" แต่ละรายการและแนบไปยัง AppView แต่สิ่งที่เกี่ยวกับสิ่งต่าง ๆ เช่นแถบเมนูด้านบนพวกเขาควรเป็น MVC สามกลุ่มอื่นหรือไม่ ฉันจะติดตั้งที่ไหนและอย่างไรโดยไม่ต้องมีการเชื่อมต่ออย่างแน่นหนา? เป็นวิธีปฏิบัติที่ยอมรับได้หรือไม่ที่จะมี …

5
การต่อสู้รายวันประชุม: ตรงต่อเวลามากกว่าการปรากฏตัวของทีมเต็ม?
ความเข้าใจของฉันคือการประชุมประจำวันการต่อสู้ควรรวดเร็วมากโฮสต์ในลักษณะที่เป็นมิตรและต้องการสมาชิกทุกคนในทีม เพราะมันมีวัตถุประสงค์คือการให้ทุกคนรู้ถึงสิ่งที่คนอื่นกำลังทำอยู่ ฉันชอบการประชุมรายวัน Scrum ที่จัดขึ้นเช่นนั้น ในโครงการล่าสุดของฉัน Scrums รายวันของเราเป็นเหมือนการประชุมอัพเดทสถานะ แม้ว่าตำแหน่งจะอยู่ที่เราถือ Scrums และฝึกฝน Agile ที่เหมาะสม เราเป็นทีมกระจายใน 2 ประเทศที่แตกต่างกันและผู้คนที่อยู่ในประเทศเดียวกันไม่ได้อยู่ในสำนักงานเดียวกัน ดังนั้นเราจึงมี Scrums เสมือน ปัญหาคือว่าการประชุมของเราจะเริ่มตรงเวลาหลายคนโทรมาก่อนเวลาเริ่มต้นจริงดังนั้นพวกเขาจึงเริ่มในวินาทีแรกของการประชุม ไม่มีความอดทนใด ๆ สำหรับความล่าช้าเล็กน้อย ตัวอย่างเช่นครั้งสุดท้ายที่เราอยู่ในโทรศัพท์และผู้ประสานงานการประชุมตรวจสอบว่าทุกคนอยู่ในนั้นและเราบอกว่าหนึ่งในสมาชิกในทีมของเรายังไม่ได้เปิด แต่เขาโทรมา และฉันถูกบอกให้เริ่มแบ่งปันโดยไม่ต้องรอสมาชิกในทีมของฉัน นอกจากนี้ทุกคนมีการประชุมจำนวนมากและบางครั้งพวกเขาก็กลับมาพร้อมการประชุมการต่อสู้ดังนั้นจึงเป็นเรื่องที่เข้าใจได้หากพวกเขามาถึงในช่วงนาทีแรกหรือที่สองของการประชุม เป็นเรื่องปกติสำหรับทีมที่ฝึก Daily Scrums หรือไม่? มันเป็นครั้งแรกที่เกิดขึ้นกับฉัน ฉันไม่สามารถหาบรรณานุกรมใด ๆ ได้โดยตรงเกี่ยวกับเรื่องนี้ แม้ว่าการปรากฏตัวของสมาชิกในทีมทุกคนจะเน้น แต่ก็เน้นว่าการประชุมควรเริ่มในเวลาเดียวกัน แต่ฉันคิดว่าอาจมีความทนทานต่อความล่าช้าเล็กน้อย ฉันยังอ่านในบล็อกที่มีคนแนะนำว่า Scrum Master สามารถลงโทษได้หากมีคนมาถึง "5 วินาที" ฉันคิดว่า Scrums ควรจะเป็นมิตรและมีโทษเช่นนั้นดูเหมือนจะเป็นประโยชน์ อะไรคือแนวทางที่แนะนำในสถานการณ์เช่นนี้?
9 agile  scrum 

1
การออกแบบอินเตอร์เฟสและ async
สมมติว่าฉันได้สร้างส่วนต่อประสานที่IFolderRepositoryมีวิธีการดังนี้: IEnumerable<Folder> GetAllFolders(); Folder GetFolderWithId(int id); void AddFolder(Folder newFolder); void ModifyFolder(Folder folderToModify, Folder folderAfterModification); void RemoveFolder(Folder folderToRemove); และฉันได้ดำเนินการและช่วยให้พูดDatabaseFolderRepository CacheFolderRepositoryDecoratorตอนนี้หลายร้อยสายต่อมา 'ผมอยากจะเพิ่ม SkyDrive โฟลเดอร์ functionallity SkyDriveFolderRepositoryดังนั้นฉันพร้อมที่จะเพิ่ม แต่น่าเสียดายที่ในขณะที่DatabaseFolderRepositoryการดำเนินการใช้วิธีการซิงโครที่จะพูดคุยกับฐานข้อมูล, SkyDrive หนึ่งใช้จำนวนมากและasync awaitจะทำอย่างไรในกรณีเช่นนี้? ในกรณีที่วิธีการทำเครื่องหมายเป็นโมฆะทำเครื่องหมายว่า async ไม่ใช่วิธีการแก้ปัญหา (จำเป็นต้องยกเว้นการจัดการ) ฉันควรเปลี่ยนอินเทอร์เฟซเพื่อส่งคืนTask<T>หรือไม่ แน่ใจว่ามันจะทำงานในตัวอย่างข้างต้น แต่พวกเขาเป็นเพียง 2 ชั้นเรียนการใช้งานอินเตอร์เฟซ หรืออินเทอร์เฟซส่วนใหญ่ของฉันควรมีTaskประเภทการส่งคืน (คุณไม่ต้องการกฎ)
9 c#  async 

2
การทำให้เป็นอันดับทำให้การใช้การฉีดพึ่งพาหรือไม่
คำถามง่าย ๆ : ฉันเข้าใจว่าการทำให้เป็นอันดับใน C # ต้องใช้ตัวสร้างเริ่มต้น นี้จะขจัดความเป็นไปได้ของการใช้สร้างฉีด DI (ซึ่งโดยทั่วไปคือสไตล์ที่ชื่นชอบของ DI ในการอ่านของฉัน[อ้างจำเป็น] ) ดังนั้นมันจึงเป็นเหตุการณ์หรือสถานการณ์จริง ๆ หรือฉันกำลังทำอะไรบางอย่างหายไป? (คำถามด้านข้าง): IoC ทำหน้าที่บรรจุขั้นตอนนี้หรือไม่?

3
ความเร็วของการคูณ << >> และการหาร
คุณสามารถใช้&lt;&lt;เพื่อคูณและ&gt;&gt;หารตัวเลขในไพ ธ อนเมื่อฉันเวลาพวกเขาพบว่าการใช้วิธีการเปลี่ยนแบบไบนารีในการทำนั้นเร็วกว่าการหารหรือคูณด้วยวิธีปกติเป็น 10 เท่า ทำไมถึงใช้งาน&lt;&lt;และ&gt;&gt;เร็วกว่า*และมาก/? เบื้องหลังกระบวนการอะไรที่เกิดขึ้น*และ/ช้าลง?

4
การใช้การต่อสู้ในโครงการขนาดเล็กที่เจ้าของไม่ต้องการมีส่วนร่วม
เมื่อเร็ว ๆ นี้ฉันได้อ่านและเรียนรู้มากมายเกี่ยวกับการต่อสู้และฉันชอบมันมาก อย่างไรก็ตามฉันมีบางสถานการณ์ที่เป็นไปได้ในหัวซึ่งฉันไม่ทราบวิธีแก้ปัญหา ดังนั้นสมมติว่าฉันอาจต้องการจัดระเบียบทีมงานที่คล่องแคล่วของ (เช่น) นักพัฒนาเว็บสี่คน (หนึ่งในนั้นคือนักออกแบบ UI / UX) ทีมนี้จะทำงานในหลักการทะเลาะกัน เริ่มแรกเราอาจจะทำงานในโครงการต่าง ๆ เช่นหน้า Landing Page สำหรับธุรกิจขนาดเล็กของคนธรรมดาเช่นการให้เช่าอพาร์ทเมนท์ขายคุกกี้ ... ลูกค้าเหล่านี้ไม่สามารถกำหนดบทบาทของเจ้าของผลิตภัณฑ์ (IMHO) ได้เพราะพวกเขาคาดหวังว่าจะจ้าง บริษัท ให้รายละเอียดบางอย่างกับเป้าหมายโครงการโดยรวมแล้วคาดหวังว่างานที่จะทำ (รวมถึงการตัดสินใจจำนวนมาก) โดยมีส่วนร่วมน้อยที่สุดเท่าที่จะเป็นไปได้ (ในความเห็นของพวกเขาพวกเขามีสิ่งที่สำคัญกว่า) สมมติว่าฉันต้องการมีส่วนร่วมในบทบาทนักพัฒนา / ทะเลาะเบาะแว้ง (ฉันรู้ว่าแม้จะเป็นที่ถกเถียงกันในการเป็นสมาชิกในทีมและอาจารย์ทะเลาะกันในครั้งเดียว) ดังนั้นฉันก็ไม่ควรรับบทบาทของเจ้าของผลิตภัณฑ์เป็น ดี. ดังนั้นสำหรับคำถามของฉัน: หากฉันเป็นเจ้าของธุรกิจของ บริษัท ฉันต้องเป็นเจ้าของผลิตภัณฑ์ด้วยหรือไม่ (บทบาทเหล่านี้รวมถึงกันและกัน) ฉันสามารถจ้างพนักงานขายที่อาจมีบทบาทเป็นเจ้าของผลิตภัณฑ์ได้หรือไม่ มันจะดีกว่าไหมถ้าเป็นนักพัฒนาที่มีประสบการณ์แทนที่จะเป็นพนักงานขาย นี่คือการเคลื่อนไหวที่ชาญฉลาดหรือไม่? ท้ายที่สุดมีวิธีอื่นที่เหมาะสมกับตำแหน่งของฉันหรือไม่ แก้ไข:ขอบคุณทุกคนสำหรับปัจจัยการผลิตที่ดี ฉันได้เพิ่มความคิดเห็นข้อมูล aditional จะได้รับการชื่นชมอย่างมาก
9 agile  scrum 

5
ความมีชีวิตของทีมพัฒนาที่ไม่มีหน้าที่ทดสอบ * เฉพาะ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา เมื่อเร็ว ๆ นี้ฉันคิดถึงเรื่องการสร้างทีมพัฒนาแบบลีน ท้ายที่สุดฉันต้องการเปิดบ้านซอฟต์แวร์เล็ก ๆ ของฉันด้วยคนจำนวนน้อยที่มีใจเดียวกัน เป้าหมายจะไม่กลายเป็นคนรวย แต่มีสภาพแวดล้อมในการทำงานที่ดี จนถึงตอนนี้ฉันกำหนดทีมแบบลีนดังต่อไปนี้: เล็ก ๆ น้อย ๆ จัดการตนเอง; สมาชิกทุกคนจะต้องมีการควบคุมคุณภาพในใจ; สมาชิกจะต้องสามารถดำเนินการได้หลายบทบาท จุดสุดท้ายคือที่ที่ฉันกังวลเล็กน้อยเพราะเมื่อมนต์ไป ... นักพัฒนาทำการทดสอบที่ไม่ดี ในขณะที่ฉันเข้าใจว่ามักจะมีนักพัฒนา "ใกล้เกินไป" รหัสหรือโค้ดเพื่อนร่วมงานของพวกเขาที่จะทำให้การประเมินผลในระดับที่สูงขึ้นของคุณภาพของพวกเขาผมไม่เชื่อว่าพวกเขาจะพฤตินัยทดสอบที่ไม่ดี ในทางตรงกันข้ามฉันเห็นว่าคุณภาพของนักพัฒนาที่ดีทับซ้อนกันอย่างมากกับคุณภาพของผู้ทดสอบที่ดี สมมติว่าถูกต้องฉันคิดวิธีที่แตกต่างของการแก้ไขปัญหา dev / ผู้ทดสอบและฉันเชื่อว่าฉันมากับแบบจำลองที่ทำงานได้ โมเดลของฉันต้องการ: บ้านซอฟต์แวร์ขนาดเล็กที่มี 2+ โครงการ วิธี Agile (ซ้ำ) เพื่อการพัฒนาและการส่งมอบ 1 ทีมต่อโครงการ สมาชิกในทีมทั้งหมดจะเป็นนักพัฒนาซอฟต์แวร์ รายละเอียดงานของพวกเขาจะระบุอย่างชัดเจนการพัฒนา , การประกันคุณภาพ , การทดสอบและการจัดส่งสินค้าเป็นความรับผิดชอบ …

4
เหตุใดภาษาการเขียนโปรแกรมเชิงวิทยาศาสตร์จึงแปลกประหลาด [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา สำหรับฉันแล้วดูเหมือนว่าภาษาการเขียนโปรแกรมสำหรับใช้ในวิทยาศาสตร์และวิศวกรรมนั้นแปลก ๆอย่างสม่ำเสมอเมื่อเทียบกับภาษาทั่วไป ตัวอย่างบางส่วนจากด้านบนของหัวของฉัน: ใน Matlab แต่ละฟังก์ชันจะต้องอยู่ในไฟล์แยกต่างหาก ใน R, &lt;- คือโอเปอเรเตอร์การมอบหมาย, เมื่อเทียบกับ = ในเกือบทุกภาษาอื่น ๆ Matlab, R, Julia และอื่น ๆ ล้วนมีดัชนี 1 รายการ Matlab ใช้% สำหรับความคิดเห็นไม่ใช่มาตรฐาน # หรือ // ของหลักสูตรภาษาเหล่านี้ทุกคนมีคุณสมบัติการออกแบบหลายอย่างที่จริงให้ง่ายต่อการใช้งานสำหรับการใช้งานทางวิทยาศาสตร์เช่นสัญกรณ์เมทริกซ์เป็นธรรมชาติมากขึ้น ถึงกระนั้นพวกเขาต่างก็เลือกสิ่งแปลกประหลาดเหล่านี้อย่างลึกลับซึ่งไม่ได้ทำให้อะไรง่ายขึ้นและสามารถหลีกเลี่ยงได้ง่ายหากนักออกแบบภาษาเลือกที่จะทำในสิ่งที่ 99% ของภาษาอื่นทำ เหตุผลที่ล็อคอินของผู้ขายอยู่หรือไม่ การขาดการติดต่อกับชุมชนพัฒนาซอฟต์แวร์ที่กว้างขึ้น? อื่น ๆ อีก? ฉันอ่านกระทู้นี้และไม่พบคำอธิบายที่น่าพอใจ เพียงเพราะ R ได้รับการออกแบบเป็นภาษาวิทยาศาสตร์ไม่ได้หมายความว่าจะต้องเพิกเฉยต่อการประชุมและใช้ &lt;- แทนที่จะเป็น …

5
จะทำให้มันชัดเจนได้อย่างไรว่าฟังก์ชั่นนั้นถูกเข้าถึงจากภายนอก?
นี่เป็นคำถามเฉพาะ C ฉันพยายามทำให้ทุกอย่างเป็นไปได้ภายในขอบเขตหน่วยการแปลโดยแสดงฟังก์ชั่นบางอย่างผ่าน.hไฟล์ นั่นคือฉันกำลังstaticเชื่อมโยงกับวัตถุระดับไฟล์ ตอนนี้ฟังก์ชั่นสองอย่างจำเป็นต้องมีการเรียกใช้โดยโมดูลอื่น แต่ไม่ใช่โดยตรง โมดูล / ไฟล์ / หน่วยการแปลของฉันสมัครสมาชิกกับโมดูลอื่นผ่านตัวชี้ไปยังฟังก์ชัน จากนั้นเมื่อมีเหตุการณ์ที่เฉพาะเจาะจงตัวชี้จะถูกเรียกด้วยอาร์กิวเมนต์บางตัว ดังนั้นฉันสงสัยว่าจะทำให้มันชัดเจนมากว่าฟังก์ชั่นเหล่านั้นถูกเรียกจากสถานที่คลุมเครือ พวกเขาควรจะเป็นstaticหรือextern(และเปิดเผยพวกเขาใน.h)? ฉันควรจะใส่คำใบ้ไว้ในชื่อของฟังก์ชั่นหรือไม่? หรือมันเพียงพอที่จะใส่ความคิดเห็น "เรียกโดย X"?

1
วิธีเพิ่มผู้มีส่วนร่วมในไฟล์ LICENSE
ฉันเป็นผู้พัฒนาหลักของห้องสมุดที่ได้รับอนุญาตภายใต้ใบอนุญาต MIT และเป็นเจ้าภาพใน Github ที่เก็บ Github มีไฟล์ LICENSE เมื่อมีคนส่งคำขอดึงฉันฉันต้องแสดงรายการผู้ที่เป็นเจ้าของลิขสิทธิ์ใน license.txt ที่แนบมาหรือฉันควรแสดงรายการเหล่านี้ในส่วนพิเศษที่นั่นหรือไม่ ฉันจำเป็นต้องทำหรือไม่ ฉันสามารถสันนิษฐานได้ว่าผู้มีส่วนร่วมตกลงที่จะรวมรหัสของพวกเขากับใบอนุญาตที่ระบุไว้ในใบอนุญาตเมื่อพวกเขาส่งคำขอดึง?

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