โปรแกรมเมอร์ควรเขียนบทเรียนเพื่อปรับปรุงความหมายของรหัสหรือไม่


15

เนื่องจากโปรแกรมเมอร์เป็นผู้เขียนและเขียนโค้ดเพื่อแสดงความคิดและแนวคิดที่เป็นนามธรรมและโค้ดที่ดีควรอ่านโดยโปรแกรมเมอร์คนอื่น ๆ โดยไม่มีปัญหาและความเข้าใจผิดนักโปรแกรมเมอร์ควรใช้บทเรียนการเขียนเพื่อเขียนโค้ดที่ดีขึ้นหรือไม่

แนวคิดที่เป็นนามธรรมและปัญหา / หน่วยงานในโลกแห่งความจริงเป็นส่วนสำคัญของการเขียนโค้ดที่ดีและความเชี่ยวชาญในภาษาที่ใช้ในการเขียนโปรแกรมควรทำให้โปรแกรมเมอร์สามารถแสดงความคิดของเขาได้ง่ายขึ้นหรือในทางที่ดีขึ้น นอกจากนี้เมื่อพยายามเขียนหรือเขียนรหัสใหม่เพื่อให้ดีขึ้นสามารถใช้เวลาในการตัดสินใจชื่อฟังก์ชั่นตัวแปรหรือโครงสร้างข้อมูลได้มาก

ฉันคิดว่านี่อาจช่วยหลีกเลี่ยงการเขียนโค้ดที่มีมากกว่าหนึ่งความหมายซึ่งมักทำให้เกิดความเข้าใจผิดระหว่างโปรแกรมเมอร์ที่แตกต่างกัน รหัสควรแสดงให้เห็นอย่างชัดเจนว่าฟังก์ชั่นนั้นชัดเจน



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

1
"ความหมายของรหัส" คืออะไร? ฉันคิดว่ามันเป็นสิ่งที่นอกเหนือจากความหมายของภาษาการเขียนโปรแกรมเพราะไม่มีบทเรียนการเขียนจำนวนมากที่จะเปลี่ยน ...
Andres F.

1
blog.codinghorror.com/recommended-reading-for-developers -> ดูโค้ดที่สมบูรณ์ 2. หนังสือ "วิธีการเขียนโค้ดที่ถูกต้อง" ดีที่สุด "ที่ฉันเคยอ่าน
Machado

1
@JoseFaeti คุณมีรสนิยมดีในหนังสือครับ :-) หน้าไม่รู้จบพูดคุยเกี่ยวกับวิธีการเขียนคำสั่ง "ถ้า" อย่างถูกต้อง? นับฉันด้วย :-)
Machado

คำตอบ:


25

1. การเขียนบทเรียน ไม่ได้จริงๆ

การเขียนซอร์สโค้ดนั้นแตกต่างจากการเขียนหนังสือมากพอ

ในขณะที่ทั้งคู่ตั้งเป้าหมายเดียวกัน: มีความคลุมเครือเท่าที่จะเป็นไปได้และเข้าใจง่ายพวกเขากำลังทำในลักษณะที่แตกต่างกันมากและสิ่งที่ผู้เขียนควรเรียนรู้นั้นไม่เหมือนกับสิ่งที่ผู้พัฒนาซอฟต์แวร์ควรเรียนรู้

ตัวอย่างที่ 1: ตัวเลขการพูด

ตัวเลขของการพูดมีค่าเมื่อเขียนนวนิยายกวีนิพนธ์ ฯลฯ เนื่องจากเป็นการเพิ่มความหมายของการเขียน

ครั้งสุดท้ายที่คุณเห็นoxymoron หรือ litotes ในซอร์สโค้ดคืออะไร? มันจะช่วยให้พวกเขามีหรือจะเป็นอันตรายอย่างยิ่งสำหรับนักพัฒนาที่จะต้องรักษาซอร์สโค้ดดังกล่าวในภายหลังหรือไม่

ตัวอย่างที่ 2: คำศัพท์

คำศัพท์ที่อุดมไปด้วยชื่นชมในวรรณกรรม ยกตัวอย่างเช่นคำศัพท์ของ William Shakespeare มีคำศัพท์สองหมื่นถึงสองหมื่นห้าพันคำ คำศัพท์ที่สมบูรณ์ยิ่งขึ้นทำให้การอ่านนวนิยายหรือบทกวีน่าสนใจยิ่งขึ้น

เมื่อคุณเขียนซอร์สโค้ดคุณคาดหวังให้คนที่พูดภาษาอังกฤษไม่เก่งอ่าน แสดงว่าคุณรู้ภาษาอังกฤษได้ดีเพียงใดสำหรับรหัสของคุณ หากคุณรู้จักคำที่สวยงามซึ่งหมายถึงสิ่งที่คุณต้องการ แต่คุณรู้ว่าผู้คนจำนวนมากไม่รู้ความหมายของคำนี้คุณควรหาคำที่มีความหมายน้อยกว่าหรือชุดของคำที่อธิบายความหมาย คำศัพท์ของคำไม่กี่พันคำมักจะเพียงพอสำหรับโครงการที่กำหนด

โปรดทราบสิ่งสำคัญ: แม้ว่า Google Translate อาจเป็นประโยชน์อย่างมากสำหรับผู้ที่ไม่ใช่เจ้าของภาษา แต่มีปัญหาสองประการสำหรับนักแปล:

  • คู่ของภาษาไม่จำเป็นต้องมีการจับคู่ระหว่าง 1: 1 คำบางคำอาจไม่มีการแปลในภาษาอื่นใดหรือหลายคำสามารถแปลเป็นคำเดียวในภาษาต่างประเทศ ตัวอย่างเช่นในรัสเซียมีคำจำนวนมากที่กำหนดเป้าหมายเฉพาะสถานะของหิมะและอากาศหนาวเย็นและการแปลเป็นภาษาฝรั่งเศสหรือสเปนมักเป็นไปไม่ได้โดยไม่สูญเสียความจำเพาะ

  • บางครั้งคำมีความหมายหลายอย่างและความหมายนั้นอนุมานจากบริบท Google Translate แม้จะมีคุณภาพสูง แต่มักจะไม่สามารถระบุความหมายได้ แต่สถานการณ์พื้นฐานที่สุด

ตัวอย่างที่ 3: การแสดงออก

การแสดงออกทำให้ร้อยแก้วยิ่งขึ้นเช่นกัน ผู้เขียนคาดหวังให้ผู้อ่านมีวัฒนธรรมทั่วไปในปริมาณที่กำหนดและใช้โอกาสนี้เพื่อทำให้ข้อความมีความหมายมากขึ้น

ในทำนองเดียวกันกับตัวอย่างก่อนหน้านิพจน์ดังกล่าวอาจเป็นปัญหาได้มากเมื่อผู้อ่านที่ไม่ใช่เจ้าของภาษาอ่าน แต่ถ้าคำศัพท์ทั่วไปสามารถแปลได้การแสดงออกก็เป็นปัญหามากกว่า

ตัวอย่างเช่นภาษาอังกฤษไม่ใช่ภาษาแรกของฉันและในชีวิตประจำวันฉันพบกับการแสดงออกรวมถึงที่นี่ใน StackExchange ซึ่งฉันไม่รู้ ฉันพยายามเดาความหมายและบางครั้งฉันก็พูดถูก แต่บางครั้งฉันผิดและ Googling การแสดงออกเหล่านั้นไม่ได้ช่วย

ผู้ใช้ในตัวเธอ / เขาแสดงความคิดเห็นทำให้ผมนึกถึงตัวอย่างซึ่งทำให้ผมต้องทนทุกข์ทรมานมาเป็นเวลานานเมื่อฉันเพิ่งเริ่มต้นการเขียนโปรแกรมที่ใช้งาน: ของ PHP เข็มและกองหญ้า ฉันไม่รู้รูปการพูดที่สอดคล้องกันดังนั้นทุกครั้งที่ฉันอ่านเอกสารฉันก็สงสัยว่ามันเกี่ยวข้องกับอะไร ไม่จำเป็นต้องพูดว่า C # sequence.Contains(element)หรือ Python ที่ยอดเยี่ยมelement in sequenceเป็นทางเลือกที่ดีกว่ามาก อย่างน้อยนักพัฒนาที่ไม่รู้ภาษาฮีบรูก็ต้องทนกับ PHP เช่นกันแต่นี่เป็นเรื่องราวที่แตกต่าง

ตัวอย่างที่ 4: การอ้างอิงทางวัฒนธรรม

การอ้างอิงทางวัฒนธรรม ในวรรณคดีมันเป็นการดึงดูดที่จะรวมองค์ประกอบจากวัฒนธรรมที่กำหนดและสิ่งนี้ก็ทำให้หนังสือยิ่งขึ้นและบางครั้งน่าสนใจมากขึ้นที่จะอ่าน

อย่างไรก็ตามรหัสจะถูกส่งไปยังนักพัฒนาจากทั่วทุกมุมโลก ดังนั้นการอ้างอิงที่ชัดเจนสำหรับนักพัฒนาชาวอิตาลีอาจไม่ชัดเจนสำหรับชาวรัสเซียและสิ่งที่เด็กชายหรือเด็กหญิงชาวอินเดียทุกคนรู้อาจไม่จำเป็นต้องรู้จักโดยโปรแกรมเมอร์ชาวอเมริกัน

ผู้ใช้คนเดียวกันที่พูดถึงเข็มและกองหญ้าเป็นตัวอย่างที่ยอดเยี่ยมของการอ้างอิงทางวัฒนธรรมเช่นกัน: Grail ใครไม่รู้ว่า Grail คืออะไร ฉันหมายถึงมันคือ "Graal" ในภาษาฝรั่งเศส "Grial" ในภาษาสเปนและ ... "Kutsal Kâse" ในภาษาตุรกี แต่ยังคงอยู่ อย่างไรก็ตามนักพัฒนาชาวอเมริกันหรือชาวยุโรปรู้ประวัติศาสตร์ในยุคกลางของจีนหรืออินเดียมากน้อยเพียงใด ทำไมทุกคนถึงคิดว่านักเขียนโปรแกรมชาวจีนและอินเดียทุกคนต้องรู้จักการอ้างอิงจากจอกศักดิ์สิทธิ์

2. บทเรียนในการเขียนซอร์สโค้ดที่แสดงออก? แน่ใจ

  • นักพัฒนาใด ๆ ควรเรียนรู้วิธีการเขียนซอร์สโค้ดที่แสดงออก

  • นักพัฒนาใด ๆ ควรอธิบายว่าทำไมความคิดเห็นใน:

    int j = i + 1; // Creating i and adding 1 to it.
    

    ไม่ดีแม้แต่ความจริงที่ว่ามันผิดทั้งหมด

  • นักพัฒนาซอฟต์แวร์ใด ๆ ควรเข้าใจการทำโครงสร้างพื้นฐานใหม่และช่วยให้ซอร์สโค้ดมีความชัดเจนมากขึ้นได้อย่างไร

  • นักพัฒนาใด ๆ ควรจำไว้ว่า 20% ของเวลานั้นใช้รหัสในการพัฒนาและ 80% ของเวลานั้นคงไว้ สำหรับบางโครงการมันเหมือน 5% - 95%

  • เป็นต้น


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

ความหมายของซอร์สโค้ดสามารถเรียนรู้ได้ด้วยวิธีอื่น superM พูดถึงหนึ่งในนั้นในคำตอบของเขา : อ่านรหัสที่ดี ฉันสามารถพูดถึงคนอื่นไม่กี่:

  • การอ่านหนังสือเช่นรหัสที่สวยงามหรือรหัสที่สมบูรณ์

  • การขอให้นักพัฒนาซอฟต์แวร์ที่มีประสบการณ์มากขึ้นเพื่อตรวจสอบรหัสของคุณ

  • ทำความเข้าใจกับรูปแบบและวิธีการและเวลาที่จะใช้


+1 คำตอบที่ดี เป็นที่แสดงออกและรัดกุมเป็นสิ่งที่สำคัญมาก แต่เขียนบทเรียนอาจจะไม่ดีที่สุดใช้เวลาการฝึกอบรม การพยายามเขียนโค้ดอธิบายตนเองอย่างเห็นได้ชัดคือสิ่งที่ทุกคนควรทำและฉันคิดว่าส่วนที่เหลือจะเข้าที่โดยไม่จำเป็นต้องมีบทเรียนจริง
Daniel B

มีเอกสารอีเมล ... และรหัส - ส่วนที่เป็นลายลักษณ์อักษรของการสื่อสารกับเพื่อนร่วมงานผู้บังคับบัญชาผู้ใช้ตัวเองในอนาคตเป็นต้น แต่โปรดไม่มีบทกวี
Steve314

ฉันได้รับประเด็น ที่จริงแล้วฉันคิดเกี่ยวกับการใช้ภาษาเฉพาะโดเมนมากขึ้น ฉันมาถึงจุดที่ฉันรู้สึกสะดวกสบายในการเขียนโปรแกรมในภาษาเฉพาะโดเมนแทนที่จะใช้ไวยากรณ์พื้นฐานของภาษาโปรแกรมวัตถุประสงค์ทั่วไป สิ่งนี้ทำให้โค้ดของคุณเข้าใจได้ง่ายขึ้นและตรงไปตรงมายิ่งขึ้นแม้กับโปรแกรมเมอร์ ฉันสงสัยว่านี่เป็นเพราะคำศัพท์ภาษาอังกฤษที่ไม่ดีของฉันหรือไม่ดังนั้นความคิดเกี่ยวกับการเขียนบทเรียน
Jose Faeti

โดยทั่วไปคำตอบที่ดี แต่ฉันได้เห็นตัวเลขของการพูดในรหัส ตัวอย่างเช่นหนึ่งในคุณสมบัติที่ดีไม่กี่อย่างของ PHP คือฟังก์ชั่นการค้นหา / ค้นหาทั้งหมดมองหาเข็มในกองหญ้า
949300

@ user949300: และนี่คือหนึ่งในเหตุผลที่ฉันเกลียด PHP มาก ในฐานะที่เป็นผู้พูดภาษาอังกฤษที่ไม่ใช่เจ้าของภาษาฉันไม่รู้จักการแสดงออกที่สอดคล้องกันและสำหรับฉันเงื่อนไขเหล่านั้นล้วน แต่มีประโยชน์ เปรียบเทียบกับ C # 's หรือที่ยอดเยี่ยมของงูใหญ่sequence.Contains(element) element in sequenceดังนั้นไม่ตัวเลขการพูดไม่มีตำแหน่งใน API
Arseni Mourzenko

11

โปรแกรมเมอร์ควรที่จะเขียนบทเรียนเพื่อเขียนโค้ดที่ดีกว่านี้หรือไม่?

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

ไม่ได้หมายความว่าโปรแกรมเมอร์ไม่ควรเรียนการเขียน พวกเขาควรจะ! เหตุผลบางอย่าง:

  • การเขียนเป็นทักษะที่จำเป็นสำหรับผู้มีการศึกษา คุณจะฉลาดขึ้นถ้าเขียนได้ดี

  • แม้จะมีความพยายามอย่างเต็มที่ แต่โปรแกรมเมอร์มักต้องการสื่อสารกับมนุษย์คนอื่น ๆ บ่อยครั้งโดยใช้คำที่เขียน

  • คุณเรียนรู้ทักษะที่นอกเหนือจากการเขียนในชั้นเรียนการเขียนและสิ่งเหล่านี้มักมีประโยชน์สำหรับโปรแกรมเมอร์ ตัวอย่างเช่นคุณจะได้เรียนรู้ที่จะพูดคุยเกี่ยวกับงานของคนอื่นโดยไม่ทำร้ายความรู้สึกของพวกเขาและคุณจะได้เรียนรู้ที่จะยอมรับคำวิจารณ์จากคนอื่น


นั่นคือประเด็น แม้ว่ารหัสของคุณจะไม่ดีขึ้น แต่คุณจะกลายเป็นคนที่ดีขึ้นโดยเฉพาะอย่างยิ่งในการสื่อสารกับโปรแกรมเมอร์หรือเพื่อนร่วมงานคนอื่น ๆ ผมคิดว่าคำถามของฉันควรจะได้รับสูตรที่แตกต่างกัน :)
โฮเซ่ Faeti

2
อย่างนี้มาก ความสามารถในการเขียน Prose well เป็นทักษะสำคัญสำหรับมืออาชีพ
Zachary K

6

รหัสของฉันขึ้นอยู่กับการสร้างคำศัพท์ที่ใช้ร่วมกันระหว่างธุรกิจและทีมเทคนิค ฉันจะบอกว่าการพัฒนาทักษะการเขียนของคุณสามารถช่วยคุณลดความคลุมเครือและความเข้าใจผิดในความพยายามเหล่านี้ แต่ก็ไม่น่าจะช่วยให้โค้ดของคุณแสดงออกได้

แนวคิดเกี่ยวกับวรรณกรรมของความหมายไม่เหมือนความคิดในการเขียนโปรแกรมของความหมาย ในหลายกรณีความคลุมเครือในภาษาสามารถนำมาใช้เป็นอุปกรณ์ทางวรรณกรรมแม้ในสารคดี - ในรูปแบบที่เพิ่มการแสดงออกเพราะมันจะก่อให้เกิดความหลากหลายทางวัฒนธรรมสมาคมภาษาและสัญลักษณ์ในผู้อ่านทั้งตั้งใจและไม่ตั้งใจ การแสดงออกชนิดนี้ไม่เป็นที่ต้องการในการเขียนโปรแกรม สิ่งที่เป็นนามธรรมมีค่ามากกว่าความคลุมเครือ ในการเขียนโปรแกรม abstraction เพิ่มความยืดหยุ่นด้วยค่าภาระการรับรู้ นามธรรมในรูปแบบวรรณกรรมสามารถมีผลตรงข้ามกับที่มีในการเขียนโปรแกรม: ยิ่งการเขียนของคุณเป็นนามธรรมยิ่งมีโอกาสมากที่ผู้อ่านจะรู้สึกว่าคุณไม่ได้พูดอะไร สัญลักษณ์และการเชื่อมโยงทั้งหมดที่เกิดจากการพูดที่เป็นรูปธรรมมีค่า

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

บางทีการเรียนรู้ที่จะโยนดินลงบนวงล้อเครื่องปั้นดินเผาจะช่วยให้คุณเริ่มเห็นแนวระหว่างฝีมือและการพัฒนาซอฟต์แวร์ การศึกษาวิธีการสื่อสารของสถาปนิกในอาคารอาจทำให้คุณมีความกตัญญูมากขึ้นสำหรับการสร้างคำศัพท์ของรูปแบบการออกแบบในการเขียนโปรแกรม การศึกษาชีววิทยาอาจนำคุณไปสู่ข้อมูลเชิงลึกที่น่าสนใจเกี่ยวกับวิธีที่มดและผึ้งค้นหาและสื่อสารเกี่ยวกับแหล่งอาหารและวิธีการที่กลไกง่ายๆเหล่านั้นสามารถแปลเป็นอัลกอริทึมการค้นพบ

การเรียนรู้สิ่งต่าง ๆ นอกโดเมนหลักของคุณมีค่าเพราะคนที่อยากรู้อยากเห็นสร้างนักพัฒนาที่ดีกว่าคนที่ไม่ได้เป็น

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


+1: "รหัสของฉันขึ้นอยู่กับการสร้างคำศัพท์ที่ใช้ร่วมกันระหว่างธุรกิจและทีมเทคนิค": จุดสำคัญมาก! ข้อบกพร่องหลายอย่างเกิดจากความเข้าใจผิดเนื่องจากนักวิเคราะห์และนักพัฒนาใช้คำศัพท์หนึ่งสำหรับสองสิ่งที่แตกต่างกัน
Giorgio

4

เมื่อการเขียนโปรแกรมโครงการล้มเหลวมักเกิดจากการสื่อสารที่ล้มเหลวโดยทั่วไปรอบ ๆ ข้อกำหนด แม้ว่าการเข้าใจภาษาอังกฤษในระดับปานกลางอาจจะเพียงพอในการเขียนโค้ด แต่การสื่อสารที่ดีนั้นเป็นสิ่งจำเป็นสำหรับการเขียนรหัสที่ถูกต้อง ในยุคของการสื่อสารด้วยข้อความที่ทำงานระยะไกลการเขียนภาษาอังกฤษเป็นทักษะการสื่อสารที่สำคัญมาก

ที่กล่าวว่าคำถามของคุณเขียนอย่างชัดเจนและรัดกุม - ดีกว่าโปรแกรมเมอร์ส่วนใหญ่ที่ฉันได้ทำงานด้วย หากไม่ได้เห็นรหัสของคุณฉันขอแนะนำให้คุณจดจ่อกับภาษาที่คุณเลือก สำหรับ Java ฉันขอแนะนำหนังสือของ Joshua Bloch "Effective Java"


ขอบคุณฉันพยายามอย่างดีที่สุด! ที่จริงแล้วฉันมาถึงจุดที่ไวยากรณ์ของภาษาการเขียนโปรแกรมสำหรับจุดประสงค์ทั่วไปไม่เพียงพอที่จะแสดงความเป็นตัวของตัวเองเมื่อทำการเข้ารหัส ตอนนี้ฉันกำลังเขียนโปรแกรมเครื่องมือตัวประมวลผลล่วงหน้าเพื่อปรับปรุงไวยากรณ์ภาษาและการใช้ภาษาเฉพาะโดเมนสำหรับเรื่องเดียวกันซึ่งอาจจะดีกว่าการพยายามบังคับความหมายในภาษาโปรแกรมทั่วไป
Jose Faeti

3

เช่นเดียวกับนักเขียนได้รับการสอนโดยการอ่านคลาสสิกของโลกดังนั้นโปรแกรมเมอร์จึงได้รับการศึกษาโดยการอ่านโค้ดที่ดี แต่มีปัญหาเล็กน้อยหนึ่งข้อ ในขณะที่มียักษ์ใหญ่ในวรรณคดีที่ได้รับการยอมรับมีบางส่วนของพวกเขาในการเขียนโปรแกรม และหากมีพวกเขาอาจ "พูด" ภาษาอื่น (ฉันไม่แน่ใจด้วยซ้ำว่ามันสมเหตุสมผลที่จะแนะนำให้อ่าน Minix source code ของ Tanenbaum)

มีวิธีที่นิยมมากในการทำให้โค้ดอ่านง่ายขึ้น (=> บำรุงรักษาได้) เช่นการเขียนความคิดเห็นการตั้งชื่อที่มีความหมายเป็นต้นนอกจากนี้หลาย บริษัท ยังกำหนดกฎการเขียนโค้ดและทำให้ทุกอย่างง่ายขึ้น

อย่างไรก็ตามเช่นเดียวกับนักเขียนที่ยอดเยี่ยมโปรแกรมเมอร์ไม่เคยพอใจกับรหัสของตัวเอง ดังนั้นการรู้ว่าเมื่อใดที่ควรหยุดมีความสำคัญพอ ๆ


2

ฉันมักจะพบเพียงแค่หยุดหลังจากโค้ดแต่ละบิตที่คุณเขียนและอ่านอีกครั้งโดยจินตนาการว่าคุณไม่เคยเห็นมันมาก่อน

ยิ่งไปกว่านั้นคือขอให้เพื่อนที่คุ้นเคยกับการเขียนโปรแกรมอ่านโค้ดของคุณโดยไม่บอกพวกเขาว่าทำอะไร


0

ฉันไม่คิดว่าจะช่วยได้ การเขียนเชิงสร้างสรรค์เป็นเรื่องเกี่ยวกับแปลงและการพัฒนาตัวละครและบทสนทนาไม่ใช่เกี่ยวกับการแสดงแนวคิดทางเทคนิคอย่างชัดเจน การเขียนทางเทคนิคอาจช่วยได้ แต่ฉันสงสัยว่ามันเป็นงานเขียนที่แตกต่างกันมาก!

และโปรดทราบว่ารหัส "อ่านได้" เป็นอัตนัยและส่วนใหญ่เป็นเรื่องของรูปแบบวากยสัมพันธ์และสำนวนทั่วไป (ซึ่งแตกต่างกันระหว่างภาษาและแม้แต่ในทีม)

อย่างไรก็ตามการเลือกชื่อที่ดีสำหรับตัวแปรและคลาสและเมธอดเป็นสิ่งสำคัญ นักพัฒนาทุกคนจะมีความเชี่ยวชาญในหัวข้อเรื่องในบางแง่มุมของโดเมนที่กำลังพัฒนาดังนั้นการใช้คำศัพท์โดเมนอย่างถูกต้องจึงเป็นสิ่งสำคัญ

คำวิจารณ์จากเพื่อนสามารถช่วยคุณสร้างคำศัพท์และความมั่นใจ


0

มีความแตกต่างอย่างมากระหว่างการเขียนโค้ดและการเขียนร้อยแก้ว

ในร้อยแก้วประโยคที่เชื่อมต่อ (หรือแยก) ตามเวลา (วิธีที่พวกเขาปฏิบัติตามกันเพื่อให้ถึงจุดสิ้นสุดหรือความหมาย) แต่ในรหัส (มีประสิทธิภาพ) คุณสามารถ (อีกครั้ง) โหลดส่วนของ 'เรื่อง' จากตารางที่มีการทำซ้ำ การดำเนินการ / การตอบสนอง ดังนั้นการโต้ตอบกับผู้อ่าน (ในร้อยแก้ว) หรือผู้ใช้ (ของรหัส) จะแตกต่างกันโดยสิ้นเชิง

ในอีกทางหนึ่งการเขียน 'ร้อยแก้ว' ที่สวยงามและการเขียนโค้ด 'nice' นั้นคล้ายกัน: การเรียนรู้ที่จะเขียน (code หรือร้อยแก้ว) เป็นกระบวนการที่เกี่ยวข้องกับการทำผิดมากมาย (หรือการคิด / การทดสอบเกี่ยวกับการปรับปรุง สง่างาม'

ฉันคิดว่าระบบธาตุทางเคมีเป็นองค์ประกอบที่สวยงามเพราะมีขนาดกะทัดรัดมากมันอธิบายคุณสมบัติพื้นฐานบางอย่างของวัสดุพื้นฐานที่เราใช้เหมือนรหัสที่มีประสิทธิภาพ เรื่องตลกมีคุณสมบัติหลายร้อยเรื่อง (นำคุณเข้าสู่อารมณ์บางอย่างรักษาอารมณ์นั้นไว้แล้วเปลี่ยนเมื่อไม่คาดคิด) แต่นั่นเป็นการฝึกเขียนโค้ดที่น่ากลัว

แต่งานเขียนทั้งสองประเภทขอให้มีฝีมือ


-1

พื้นฐานภาษาอังกฤษและไวยากรณ์ก็เพียงพอแล้วสำหรับโปรแกรมเมอร์จากมุมมองของฉัน แต่แล้วสิ่งใดก็ตามที่จะทำลายกิจวัตรการเขียนโปรแกรมแบบซ้ำซากจำเจก็จะได้รับการฟื้นฟูและดังนั้นบทเรียนการเขียนจะผ่อนคลายสำหรับโปรแกรมเมอร์


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