โปรดหลีกเลี่ยงปัญหาทางเทคนิคหลีกเลี่ยงพฤติกรรมวัฒนธรรมอาชีพหรือปัญหาทางการเมือง
โปรดหลีกเลี่ยงปัญหาทางเทคนิคหลีกเลี่ยงพฤติกรรมวัฒนธรรมอาชีพหรือปัญหาทางการเมือง
คำตอบ:
จุดบกพร่องอยู่ในรหัสของคุณไม่ใช่คอมไพเลอร์หรือไลบรารีรันไทม์
หากคุณพบข้อผิดพลาดที่ไม่สามารถเกิดขึ้นได้ให้ตรวจสอบว่าคุณได้สร้างและปรับใช้โปรแกรมของคุณอย่างถูกต้อง (โดยเฉพาะถ้าคุณใช้ IDE ที่ซับซ้อนหรือกรอบการทำงานที่พยายามซ่อนรายละเอียดที่ยุ่งเหยิงจากคุณ ... หรือถ้างานสร้างของคุณเกี่ยวข้องกับขั้นตอนแบบแมนนวลมากมาย)
โปรแกรมที่ทำงานพร้อมกัน / มัลติเธรดนั้นยากที่จะเขียนและยากต่อการทดสอบอย่างถูกต้อง เป็นการดีที่สุดที่จะมอบหมายให้มากที่สุดเท่าที่คุณสามารถทำได้พร้อมกันกับไลบรารีและกรอบงาน
การเขียนเอกสารเป็นส่วนหนึ่งของงานของคุณในฐานะโปรแกรมเมอร์ อย่าปล่อยให้ "คนอื่น" ทำ
แก้ไข
ใช่จุด # 1 ของฉันเกินจริง แม้แต่แพลตฟอร์มแอพพลิเคชั่นวิศวกรรมที่ดีที่สุดก็ยังมีข้อผิดพลาดร่วมกันและบางอันที่ไม่ได้รับการออกแบบมาอย่างดีก็ยังอุดมไปด้วย แต่ถึงกระนั้นคุณควรสงสัยรหัสของคุณก่อนเสมอและเริ่มตำหนิคอมไพเลอร์ / ไลบรารีข้อบกพร่องเมื่อคุณมีหลักฐานชัดเจนว่ารหัสของคุณไม่ใช่ความผิด
ย้อนกลับไปในวันที่ฉันพัฒนา C / C ++ ฉันจำกรณีที่ควรเพิ่ม "บั๊ก" ของ optimizer กลายเป็นเพราะฉัน / โปรแกรมเมอร์คนอื่น ๆ ทำสิ่งต่าง ๆ ที่สเป็คภาษาบอกว่ามีผลลัพธ์ที่ไม่ได้กำหนด สิ่งนี้ใช้ได้กับภาษาที่ปลอดภัยอย่างจาวาเช่น; เช่นลองดูรูปแบบหน่วยความจำ Java (JLS ตอนที่ 17) อย่างละเอียด
การคำนวณจุดลอยตัวนั้นไม่แม่นยำ
อย่าหยุดเรียน
สิ่งที่คุณสามารถทำได้อันดับหนึ่งในการเพิ่มคุณภาพและความสามารถในการบำรุงรักษาโค้ดของคุณคือลดการซ้ำซ้อน
การแก้ไขปัญหาและทักษะการแก้จุดบกพร่อง
พวกเขาแทบจะไม่ได้ใช้เวลาในหัวข้อนี้ในหลักสูตรการเขียนโปรแกรมใด ๆ ที่ฉันได้รับและจากประสบการณ์ของฉันมันเป็นหนึ่งในปัจจัยที่ยิ่งใหญ่ที่สุดของการทำงานของโปรแกรมเมอร์ ชอบหรือไม่คุณใช้เวลามากขึ้นในช่วงการบำรุงรักษาแอพของคุณมากกว่าขั้นตอนการพัฒนาใหม่
ฉันทำงานกับโปรแกรมเมอร์หลายคนที่ตรวจแก้จุดบกพร่องโดยการเปลี่ยนสิ่งต่าง ๆ โดยไม่มีกลยุทธ์ในการค้นหาปัญหา แต่อย่างใด ฉันมีบทสนทนานี้หลายสิบครั้ง
โปรแกรมเมอร์คนอื่น:ฉันคิดว่าเราควรลองดูว่ามันแก้ไขได้ไหม
ฉัน:โอเคสมมติว่าจะแก้ไขได้ สิ่งนี้บอกอะไรคุณเกี่ยวกับที่มาของปัญหาคืออะไร
โปรแกรมเมอร์อื่น ๆ :ผมไม่ทราบ แต่เราต้องพยายามบางสิ่งบางอย่าง
พื้นฐาน. โปรแกรมเมอร์ในปัจจุบันเรียนรู้เทคโนโลยีไม่ใช่แนวคิด มันผิด.
Its wrong
ควรเป็นit's wrong
ตัวอย่าง
โปรแกรมเมอร์ทุกคนควรรู้ว่าเขาวางสมมติฐานในโค้ดตลอดเวลาเช่น "หมายเลขนี้จะเป็นค่าบวกและ จำกัด " รหัสนี้จะสามารถเชื่อมต่อกับเซิร์ฟเวอร์ได้ตลอดเวลาภายในพริบตา "
และเขาควรรู้ว่าเขาควรเตรียมตัวเมื่อสมมติฐานเหล่านั้นแตก
assert()
- ทุกที่ assert()
จะช่วยคุณจัดทำเอกสารสมมติฐานและช่วยคุณประหยัดเมื่อคุณผิด
เรียนรู้แนวคิด คุณสามารถ Google ไวยากรณ์
การคิดเชิงวิพากษ์และเชิงตรรกะ คุณไม่สามารถทำสิ่งที่ดีได้หากไม่มีมัน
การทดสอบหน่วย นี่เป็นวิธีที่ดีในการจัดทำสมมติฐานของคุณเกี่ยวกับวิธีการใช้รหัส
มันยากกว่าที่คุณคิด
ในขณะที่มันง่าย (ish) ที่จะรวบรวมบางสิ่งบางอย่างเข้าด้วยกันที่ทำงานเมื่อใช้งานตามปกติจัดการกับอินพุตที่ผิดพลาดทุกกรณีขอบและมุมโหมดความล้มเหลวที่เป็นไปได้ ฯลฯ ใช้เวลานานและอาจเป็นส่วนที่ยากที่สุดของงาน
จากนั้นคุณต้องทำให้แอปพลิเคชันดูดีเช่นกัน
ความรู้เกี่ยวกับโดเมน สเป็คไม่เคย 100%; การรู้ว่าโดเมนที่คุณกำลังพัฒนาต้องการจะเพิ่มคุณภาพของผลิตภัณฑ์
สัญลักษณ์ Big O และความหมายของมัน
อ้างอิงที่มีประโยชน์บางอย่าง
พอยน์เตอร์เห็นได้ชัด :)
รหัสสมบูรณ์ 2 - ครอบคลุมเพื่อปกปิด
ข้อมูลสำคัญกว่ารหัส
หากข้อมูลของคุณสมาร์ทรหัสสามารถเป็นใบ้
รหัสโง่ง่ายต่อการเข้าใจ ดังนั้นข้อมูลอัจฉริยะ
เกือบทุกความเศร้าโศกอัลกอริทึมที่ฉันเคยได้รับเนื่องจากข้อมูลอยู่ในสถานที่ที่ไม่ถูกต้องหรือถูกทารุณกรรมจากความหมายที่แท้จริงของมัน ถ้าข้อมูลของคุณมีความหมายใส่ความหมายลงไปในระบบการพิมพ์
ภาษาและสภาพแวดล้อมใดเหมาะสมที่สุดสำหรับงาน และมันก็ไม่ใช่สิ่งที่คุณโปรดปรานเสมอไป
หารและพิชิต เป็นวิธีที่ดีที่สุดในการแก้ปัญหาเชิงปฏิบัติทุกประเภทตั้งแต่การตั้งเวลาไปจนถึงการแก้ไขข้อบกพร่อง
ทักษะที่แท้จริงสะท้อนให้เห็นถึงความสามารถในการออกแบบที่เรียบง่ายได้ดีไม่ได้อยู่ในความสามารถในการออกแบบที่ซับซ้อนเลย
ทักษะนี้มาจากความชำนาญขั้นพื้นฐานที่มากขึ้นไม่ใช่ความชำนาญของอาร์เคน โปรแกรมเมอร์ที่มีความสามารถสูงไม่ได้ถูกกำหนดโดยความสามารถในการเขียนโค้ดในสิ่งที่ผู้อื่นไม่สามารถทำได้ (ใช้ฟังก์ชั่นระดับสูง, การเขียนโปรแกรมการทำงานขั้นสูง, มีอะไรที่คุณ) การเลือกการสลายตัวที่เหมาะสมของฟังก์ชั่นระหว่างชั้นเรียน; การสร้างความแข็งแกร่ง ใช้เทคนิคการเขียนโปรแกรมป้องกัน และใช้รูปแบบและชื่อที่นำไปสู่การจัดทำเอกสารด้วยตนเองมากขึ้นสิ่งเหล่านี้คือขนมปังและเนยของการเขียนโปรแกรมที่มีความสามารถสูง
การเขียนรหัสที่ดีที่คุณหรือคนอื่นสามารถกลับมาได้ในหนึ่งสัปดาห์ต่อเดือนหรือหนึ่งปีและเข้าใจวิธีใช้แก้ไขปรับปรุงหรือขยายรหัสนั้นเป็นสิ่งสำคัญ มันช่วยให้คุณประหยัดเวลาและความพยายามทางจิต มันทำให้ล้อของการผลิตเพิ่มขึ้นโดยการลบสิ่งกีดขวางที่คุณเคยเจอมาก่อน (อาจขัดจังหวะความคิดของคุณหรืออาจต้องใช้เวลาหลายชั่วโมงหรือหลายวันในการพยายามทำงานให้ห่างจากงานอื่น ๆ ฯลฯ ) และบางครั้งก็ทำให้ปัญหาที่ยากหายไป
ในคำ: ความสง่างาม ทุกคลาสทุกวิธีทุกเงื่อนไขทุกบล็อคทุกชื่อตัวแปร: มุ่งมั่นเพื่อความสง่างาม
อย่าตำหนิผู้ใช้ว่าสิ่งใดที่สามารถแก้ไขได้ด้วยประสบการณ์ผู้ใช้ที่สะอาดขึ้นหรือเอกสารที่ดีกว่า บ่อยครั้งโปรแกรมเมอร์จะถือว่าผู้ใช้เป็นคนงี่เง่าที่ไม่สามารถทำสิ่งใดถูกต้องโดยอัตโนมัติเมื่อปัญหาเกิดจากประสบการณ์โดยรวมที่ไม่ดีหรือขาดการสื่อสาร โปรแกรมมีไว้เพื่อใช้งานและการปฏิบัติต่อผู้ใช้ด้วยการดูถูกคือการพลาดจุดเริ่มต้นในการเขียนโปรแกรม
โปรแกรมเมอร์ทุกคนควรรู้วิธีการใช้ดีบักและรู้วิธีการใช้งานได้ดี
โครงสร้างข้อมูล
วิธีใช้งาน Google
การประเมินการลัดวงจรแม้ว่าจะเป็นหนึ่งในสิ่งแรกที่พวกเขาสอนคุณเกี่ยวกับผู้ประกอบการบูลีน
วิธีประมาณการอย่างแม่นยำว่าจะใช้เวลาเท่าไรในการปรับใช้คุณสมบัติ ที่สำคัญกว่านั้นคือวิธีการถ่ายทอดว่าคุณไม่พล่ามเมื่อคุณส่งค่าประมาณนั้น
เรื่องสไตล์การเข้ารหัส:
... และเรื่องการออกแบบที่ดี
โดยหลักการแล้วโปรแกรมเมอร์จะเรียนรู้สิ่งเหล่านี้ก่อน (หรือระหว่าง) การตรวจสอบโค้ดครั้งแรกของเขา / เธอ ในกรณีที่เลวร้ายที่สุดโปรแกรมเมอร์เรียนรู้เมื่อเจ้านายบอกให้เขา / เธอทำการเปลี่ยนแปลงที่ไม่สำคัญกับรหัสที่น่ากลัวอย่างเร่งรีบ