คำถามติดแท็ก source-code

ซอร์สโค้ดคือชุดคำสั่งคอมพิวเตอร์ใด ๆ (อาจมีความคิดเห็น) ที่เขียนโดยใช้ภาษาคอมพิวเตอร์ที่มนุษย์สามารถอ่านได้ซึ่งมักเป็นข้อความ

10
ทำไมเราต้องการคลาสจำนวนมากในรูปแบบการออกแบบ
ฉันเป็นนักพัฒนารุ่นน้องในรุ่นพี่และกำลังดิ้นรนมากกับการเข้าใจความคิดเหตุผล ฉันกำลังอ่านการออกแบบที่ขับเคลื่อนด้วยโดเมน (DDD) และไม่เข้าใจว่าทำไมเราต้องสร้างคลาสจำนวนมาก ถ้าเราทำตามวิธีการออกแบบซอฟต์แวร์เราจะจบด้วยชั้นเรียน 20-30 ชั้นซึ่งสามารถแทนที่ได้ด้วยไฟล์มากที่สุดสองไฟล์และฟังก์ชั่น 3-4 อย่าง ใช่มันอาจยุ่งเหยิง แต่มันสามารถดูแลและอ่านได้มากกว่า เมื่อใดก็ตามที่ฉันต้องการดูว่าบางอย่างEntityTransformationServiceImplทำอะไรฉันต้องติดตามคลาสอินเทอร์เฟซการเรียกใช้ฟังก์ชันการสร้างการสร้างและอื่น ๆ มากมาย คณิตศาสตร์ง่าย ๆ : รหัสจำลอง 60 บรรทัดเทียบกับ 10 คลาส X 10 (สมมติว่าเรามี logics ที่แตกต่างกันโดยสิ้นเชิง) = 600 บรรทัดของรหัสยุ่งกับ 100 ชั้นเรียน + อีกมากมายที่จะรวมและจัดการ อย่าลืมเพิ่มการฉีดพึ่งพา อ่านรหัสยุ่ง 600 เส้น = หนึ่งวัน 100 คลาส = หนึ่งสัปดาห์ยังคงลืมว่าหนึ่งจะทำอะไรเมื่อ ทุกคนบอกว่าง่ายต่อการบำรุงรักษา แต่เพื่ออะไร ทุกครั้งที่คุณเพิ่มฟังก์ชันการทำงานใหม่คุณจะเพิ่มคลาสอีกห้าคลาสด้วยโรงงานหน่วยงานบริการและค่านิยม ฉันรู้สึกว่ารหัสประเภทนี้เคลื่อนที่ช้ากว่ารหัสที่ยุ่งเหยิงมาก สมมติว่าถ้าคุณเขียนรหัสยุ่ง 50K …

13
ฉันควรปรับเปลี่ยนรหัสที่ทำเครื่องหมายว่า“ ไม่เปลี่ยนแปลง” หรือไม่
ฉันกำลังจัดการกับ codebase ที่ใหญ่มากและฉันได้รับสองสามเดือนเพื่อ refactor รหัสที่มีอยู่ กระบวนการ refactor นั้นเป็นสิ่งจำเป็นเพราะในไม่ช้าเราจะต้องเพิ่มคุณสมบัติใหม่ ๆ ให้กับผลิตภัณฑ์ของเราและในตอนนี้เราไม่สามารถเพิ่มคุณสมบัติใด ๆ ได้อีกต่อไปโดยไม่ทำลายสิ่งอื่นใด ในระยะสั้น: ยุ่งรหัสขนาดใหญ่ที่เราหลายคนเคยเห็นในอาชีพของพวกเขา ในระหว่างการเปลี่ยนโครงสร้างเป็นครั้งคราวฉันพบชั้นเรียนวิธีการหรือบรรทัดของรหัสที่มีความคิดเห็นเช่น หมดเวลาตั้งค่าให้โมดูล A เวลาในการทำสิ่งต่างๆ หากไม่ได้ตั้งเวลาเช่นนี้มันจะหยุด หรือ อย่าเปลี่ยนสิ่งนี้ เชื่อฉันสิคุณจะทำลายสิ่งต่างๆ หรือ ฉันรู้ว่าการใช้ setTimeout ไม่ใช่วิธีปฏิบัติที่ดี แต่ในกรณีนี้ฉันต้องใช้ คำถามของฉันคือ: ฉันควร refactor รหัสเมื่อฉันพบคำเตือนดังกล่าวจากผู้เขียน (ไม่ฉันไม่สามารถติดต่อกับผู้เขียน)?

30
คุณดำดิ่งลงสู่ฐานรหัสขนาดใหญ่ได้อย่างไร
คุณใช้เครื่องมือและเทคนิคใดในการสำรวจและเรียนรู้รหัสฐานที่ไม่รู้จัก ฉันกำลังคิดถึงเครื่องมือเช่นgrep, ctagsการทดสอบหน่วย, การทดสอบการใช้งาน, เครื่องสร้างแผนภาพคลาส, กราฟการโทร, การวัดโค้ดเช่นsloccountและอื่น ๆ ฉันจะสนใจประสบการณ์ของคุณผู้ช่วยที่คุณใช้หรือเขียนเองและขนาดของรหัสฐานที่คุณทำงาน ฉันรู้ว่าการทำความคุ้นเคยกับฐานรหัสเป็นกระบวนการที่เกิดขึ้นเมื่อเวลาผ่านไปและความคุ้นเคยอาจหมายถึงอะไรก็ได้ตั้งแต่ "ฉันสามารถสรุปรหัส" เป็น "ฉันสามารถปรับโครงสร้างและย่อขนาดเป็น 30% ของขนาด" แต่จะเริ่มได้อย่างไร


6
เหตุใดบางโปรแกรม C เขียนในไฟล์ต้นฉบับขนาดใหญ่?
ตัวอย่างเช่นเครื่องมือSysInternals "FileMon" จากอดีตมีไดรเวอร์โหมดเคอร์เนลที่มีซอร์สโค้ดทั้งหมดในไฟล์ 4,000 บรรทัด เช่นเดียวกันสำหรับโปรแกรม ping แรกที่เคยเขียน (~ 2,000 LOC)
88 design  c  source-code 

17
คุณรับมือกับโค้ดที่น่าเกลียดที่คุณเขียนได้อย่างไร [ปิด]
ดังนั้นลูกค้าของคุณขอให้คุณเขียนรหัสเพื่อให้คุณทำ จากนั้นเขาก็เปลี่ยนสเปคของคุณตามที่คาดไว้และคุณจะใช้คุณสมบัติใหม่ของเขาอย่างขยันขันแข็งอย่างเด็กน้อย ยกเว้น ... ฟีเจอร์ใหม่ที่ขัดแย้งกับฟีเจอร์เก่าดังนั้นตอนนี้โค้ดของคุณยุ่งเหยิง คุณจริงๆต้องการที่จะกลับไปแก้ไขมัน แต่เขาช่วยให้ขอสิ่งใหม่ ๆ และเวลาที่คุณเสร็จสิ้นการทำความสะอาดสิ่งที่ทุกคนจะลมขึ้นเป็นระเบียบอีกครั้ง คุณทำอะไร? หยุดการเป็นโรค OCD และเพียงยอมรับว่ารหัสของคุณกำลังยุ่งเหยิงไม่ว่าคุณจะทำอะไร บันทึกการทำความสะอาดสำหรับรุ่น 2 หรือไม่

29
บริษัท ของฉันสามารถมอบสิทธิ์ IP ให้กับแอปพลิเคชันที่ฉันเขียนไปหลายชั่วโมงเพื่อเริ่มการทำงานอื่นได้หรือไม่ [ปิด]
ฉันเป็นผู้ฝึกงานให้กับ บริษัท ด้านสุขภาพ (ไม่ได้รับค่าจ้าง) เรียกว่าบริษัท เอและฉันสังเกตเห็นว่าพวกเขาใช้กระดาษจำนวนมากสำหรับสิ่งที่สามารถทำได้บนคอมพิวเตอร์ ไฟล์ Excel สำหรับสิ่งที่ไม่ควรอยู่ใน Excel ดังนั้นฉันจึงต้องการปรับปรุงการเขียนโปรแกรมของฉันและคิดว่ามันเป็นโอกาสที่ดีที่สุดที่จะทำ ฉันพัฒนาแอพสองตัวเพื่อใช้งาน แอปพลิเคชันเหล่านี้ทั้งหมดอยู่นอกเวลาของ บริษัท แอปพลิเคชั่นเดียวที่ฉันทำและพวกเขารักและหนึ่งในผู้อำนวยการมีน้องชายที่มีสุขภาพดี เขาต้องการให้ฉันมอบซอร์สโค้ดของฉันเพื่อให้ บริษัท น้องชายของเขาสามารถพัฒนาและขายมันได้ (ฉันไม่อยู่ในสมการ) ฉันไม่มีความตั้งใจที่จะส่งมอบรหัสของฉันเพราะฉันใช้เวลาส่วนใหญ่นอกเวลาทำ แต่ฉันไม่ต้องการเผาสะพานกับใครใน บริษัท ฉันไปที่ผู้กำกับไม่ได้และบอกเขาว่า "ฉันไม่คิดอย่างนั้น" ฉันสบายดีกับการสาธิตให้พี่ ๆ เห็นว่ามันใช้งานอย่างไร แต่บรรทัดก็ยอมแพ้รหัสของฉัน หากพวกเขาต้องการสร้างบางอย่างเช่นนั้นพวกเขาสามารถไปข้างหน้าฉันไม่มีปัญหากับมัน อะไรคือวิธีที่ถูกต้องในการเข้าใกล้สิ่งนี้และพวกเขามีสิทธิ์ที่จะทำสิ่งนี้ให้ฉันได้อย่างไร แก้ไข: ไม่มีสัญญาฉันไม่เคยเซ็นสัญญาอะไรเลย

5
คุณจะใส่ราคาลงในซอร์สโค้ดของคุณได้อย่างไร [ปิด]
ฉันถูกขอให้ขายซอร์สโค้ด (พร้อมกับผู้ใช้ปัจจุบัน) ของแอพยูทิลิตี้เล็ก ๆ ที่ฉันสร้างขึ้นเมื่อหลายปีก่อน ฉันได้ตรวจสอบวิธีการใส่ราคาลงในซอร์สโค้ด แต่จนถึงขณะนี้ยังไม่มีวิธีแก้ไขที่ดี ฉันค้นหาสุทธิแล้ว แต่ไม่พบสิ่งใดมีประโยชน์ จากนั้นฉันก็เจอผู้ใช้บางคนที่ขายซอร์สโค้ดกับผู้ใช้ด้วยเช่นกัน แต่ราคาของพวกเขาดูสูงเกินจริง ตัวอย่างเช่นหนึ่งคนคำนวณราคาต่อผู้ใช้ที่ประมาณ $ 200 เขามีผู้ใช้ 80 คนและลงเอยด้วยการขายแหล่งข้อมูลกับผู้ใช้ในราคา $ 30k เขาคิดราคานี้อย่างไร ฉันสามารถหาราคาที่ดีด้วยสูตรนี้: (จำนวนผู้ใช้ x ราคาแอป) + (ราคาแอพ x จำนวนผู้ใช้ใหม่ในหนึ่งปี) ? ถ้านี่เป็นสูตรที่ดีคุณจะทราบราคาที่ยังไม่มีผู้ใช้ได้อย่างไร

10
รหัสคือ "มรดก" เมื่อใด [ปิด]
เราทำเสร็จแล้วเราติดป้ายกำกับโค้ด (บ่อยครั้งที่เราสืบทอดมา) เป็น "มรดก"? แต่มันยังคงใช้ในระบบการผลิต - ดังนั้นมันจึงเป็นมรดกจริงๆ และอะไรทำให้เป็นมรดก หากเราควรหลีกเลี่ยงการติดฉลากที่ไม่มีเหตุผลรับรองของรหัสการทำงานที่สมบูรณ์แบบ การติดฉลากเป็นสิ่งที่มั่นใจได้อย่างแท้จริงซึ่งทำให้เราสามารถผลักดันสิ่งใหม่ ๆ และทำให้ผู้บริหารระดับสูงมีความสุขและมีความสุข? สรุปคำตอบ เมื่อมองผ่านคำตอบที่ฉันเห็นสี่รูปแบบทั่วไป นี่คือที่ฉันเห็นรายละเอียด: รหัสใด ๆ ที่ถูกส่ง: 6 ระบบที่ตายแล้ว: 2.5 ไม่มีการทดสอบหน่วย: 2 นักพัฒนาไม่ได้อยู่ที่: 1.5

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

4
การตั้งชื่อคลาส: เอกพจน์หรือพหูพจน์ [ปิด]
เป็นเรื่องยากสำหรับฉันที่จะเลือกรูปแบบเอกพจน์และพหูพจน์สำหรับชื่อคลาส: CustomerRepository vs. CustomersRepository CustomerService vs. CustomersService CustomerController vs. CustomersController และสำหรับชื่อคอมโพสิตมันก็ยิ่งยากขึ้น: OrderCustomerRepository กับ OrderCustomersRepository เทียบกับ OrdersCustomersRepository คุณชอบแนวทางใดและทำไม

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

5
คุณจะไปอ่านตัวอย่างของซอร์สโค้ดได้ที่ไหน [ปิด]
ฉันเคยได้ยินบางคนบอกว่าหนึ่งในวิธีที่ดีที่สุดในการปรับปรุงความสามารถในการเขียนโค้ดของคุณคือการอ่านโค้ดของผู้อื่นและทำความเข้าใจกับมัน คำถามของฉันในฐานะโปรแกรมเมอร์ที่ค่อนข้างใหม่ฉันจะไปหาตัวอย่างซอร์สโค้ดที่ดีที่อยู่ไม่ไกลเกินหัวได้อย่างไร

13
มีความปลอดภัยแค่ไหนในการรวบรวมซอร์สโค้ดจากคนแปลกหน้าแบบสุ่ม? [ปิด]
สมมติว่าฉันกำลังตรวจสอบรหัสที่ผู้สมัครงานส่งเพื่อพิสูจน์ทักษะของพวกเขา เห็นได้ชัดว่าฉันไม่ต้องการเรียกใช้โปรแกรมปฏิบัติการที่พวกเขาส่ง ไม่ชัดเจนฉันไม่ต้องการเรียกใช้ผลลัพธ์ของการคอมไพล์รหัสของพวกเขา (ตัวอย่างเช่นJava อนุญาตให้ซ่อนโค้ดที่รันได้ในความคิดเห็น ) สิ่งที่เกี่ยวกับการรวบรวมรหัสของพวกเขา? ฉันต้องการคอมไพเลอร์คำเตือนถ้ามี แต่จะเกิดอะไรขึ้นถ้ารหัสของพวกเขามีลำดับตัวละครที่ฉลาดซึ่งใช้ประโยชน์จากคอมไพเลอร์ของฉันและคอมไพเลอร์ของฉันประนีประนอมเครื่องของฉัน? เมื่อฉันใช้ Google สำหรับ "ช่องโหว่ของคอมไพเลอร์" ความนิยมที่ฉันได้รับนั้นเกี่ยวกับการเพิ่มประสิทธิภาพคอมไพเลอร์และการปล่อยโค้ดและว่าโค้ดที่ปล่อยออกมานั้นปลอดภัยพอ ๆ กับซอร์สโค้ดดั้งเดิมหรือไม่ โดยทั่วไปแล้วคอมไพเลอร์จะได้รับการตรวจสอบเพื่อให้แน่ใจว่าพวกเขาจะไม่ประนีประนอมเครื่องของผู้ใช้เมื่อทำการรวบรวมโค้ดที่ฉลาด การรวบรวมโค้ดจากคนแปลกหน้าปลอดภัยแค่ไหน?

16
เป็นความคิดที่ดีที่จะใส่หมายเลขข้อผิดพลาดในการแสดงความคิดเห็นในจุดเริ่มต้นของไฟล์ต้นฉบับ? [ปิด]
มันเป็นการดีหรือไม่ที่จะใส่หมายเลขบั๊กในไฟล์ลงในความคิดเห็นส่วนหัว? ความคิดเห็นจะมีลักษณะเช่นนี้: MODIFIED (MM/DD/YY) abc 01/21/14 - Bug 17452317 - npe in drill across in dashboard edit mode cde 01/17/14 - Bug 2314558 - some other error description ดูเหมือนว่ามีประโยชน์ แต่ก็ถือว่าเป็นการปฏิบัติที่ไม่ดี?

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