ใครบางคนควรใช้ FP คิดว่าอ่านรหัสจำเป็น?


14

ฉันจบการศึกษาจากมหาวิทยาลัยเมื่อประมาณห้าเดือนที่แล้วและทำงานในท้องถิ่นเมื่อสี่เดือนที่ผ่านมา ขณะอยู่ที่มหาวิทยาลัยฉันเรียน Haskell, F # และอื่น ๆ ด้วยตัวเอง เราถูกสอน Java ที่มหาวิทยาลัย แต่ฉันได้สัมผัสกับการเขียนโปรแกรมการทำงานเร็ว ๆ นี้และใช้เวลากับมันมากกว่าที่ฉันทำกับการเขียนโปรแกรมที่จำเป็น เป็นผลให้สมองของฉันมีสายสำหรับการคิดการทำงาน บริษัท ที่ฉันเข้าร่วมใช้ Python และรหัสมีความจำเป็นอย่างยิ่ง ฉันมีเวลายากมากที่จะอ่านโค้ดที่จำเป็น ฉันไม่สามารถติดตามการกลายพันธุ์ เมื่อการทำ for-if-else-for-... การซ้อนกันมีความลึกมากกว่าสี่ระดับฉันจะสูญเสียการติดตามสิ่งที่เกิดขึ้นในโค้ดอย่างสมบูรณ์ เพื่อเพิ่มเข้าไป Python เป็นภาษาแบบไดนามิกดังนั้นจึงไม่มีประเภทในรหัส มัน' หลายสัปดาห์มาแล้วที่ฉันพยายามทำความเข้าใจส่วนหนึ่งของ codebase ของเรา (ซึ่งค่อนข้างซับซ้อนพอสมควร) แต่ฉันไม่ได้ทำความคืบหน้าใด ๆ เพื่อทำความเข้าใจ กรุณาเสนอเทคนิคการปฏิบัติเกี่ยวกับวิธีที่ฉันควรจะไปเกี่ยวกับการทำความเข้าใจรหัสที่ ขอบคุณล่วงหน้า!

แก้ไข:
บางทีฉันควรพูดถึงว่ามีความคิดเห็นไม่มากในรหัสและชื่อยังไม่ง่ายนัก


1
คุณค่อนข้างจะไม่มีความคิดเห็นหรือความคิดเห็นที่ไม่ถูกต้อง? ฉันแน่ใจว่าความคิดเห็นจะไม่อายุดีภายใต้เงื่อนไขที่คุณพูดถึง
Larry Coleman

ยกเว้นว่ารหัสอยู่ในชุดย่อยขนาดเล็กของรหัสที่สามารถนำมาประกอบเป็น "การแสดงความคิดเห็นด้วยตนเอง" ฉันควรจะมีความคิดเห็นอย่างน้อยบางส่วน แต่นั่นเป็นเพียงฉัน!
John Tobler

2
แม้แต่โปรแกรมเมอร์ที่มีความจำเป็นก็มักจะ จำกัด ผลข้างเคียงอย่างน้อยก็อย่างสังหรณ์ใจและเขียนวิธีการเล็ก ๆ ฉันคิดว่าคุณเพิ่งลงฐานโค้ดเบสที่น้อยกว่าอุดมคติ
Mauricio Scheffer

คำตอบ:


14

การเข้าใจรหัสดั้งเดิมนั้นยาก มันแทบจะไม่เกี่ยวอะไรกับการทำงานกับขั้นตอน

  1. สร้างแผนที่บางชนิด แผนภาพส่วนประกอบของแพ็คเกจและโมดูล Python สำหรับแต่ละโมดูลคุณจะต้องสร้างแผนภาพคลาส

  2. ใช้ Python interpreter คุณควรจะสามารถนำเข้าโมดูลสร้างวัตถุและออกกำลังกายแบบโต้ตอบ นั่นเป็นสาเหตุที่ Python ได้รับความนิยม คุณสามารถพิมพ์type(x)เพื่อดูว่าตัวแปรชนิดใด ( x ) คืออะไร

  3. เมื่อมีข้อสงสัยโปรดอ่านรหัสการทดสอบหน่วย หากไม่มีรหัสทดสอบหน่วยแสดงว่าคุณมีปัญหาใหญ่และมีปัญหานอกเหนือจากการเรียนรู้รหัสฐานใหม่

  4. เขียนสิ่งต่างๆลงไป เริ่มด้วยเอกสารด้านข้าง จากนั้นเมื่อคุณคิดว่าคุณรู้ว่าเกิดอะไรขึ้นให้เพิ่มความคิดเห็น docstring ในฟังก์ชั่นวิธีการและชั้นเรียน เพิ่มต้นเหล่านี้และบ่อยครั้ง

  5. ใช้สฟิงซ์กับ 'autodoc' เพื่อรวบรวมสิ่งที่คุณกำลังเรียนรู้

ส่วนที่สำคัญที่สุดคือ มันยากที่จะเก็บสิ่งต่าง ๆ ไว้ในหัวของคุณ ง่ายต่อการเก็บสิ่งต่าง ๆ ในไฟล์เอกสาร


6
+1 การทำความเข้าใจกับรหัสดั้งเดิมใด ๆนั้นเป็นเรื่องยากแม้ว่าจะเขียนได้ดีก็ตาม
quant_dev

12

ฉันมีเวลายากมากที่จะอ่านโค้ดที่จำเป็น เมื่อการทำ for-if-else-for-... การซ้อนกันมีความลึกมากกว่าสี่ระดับฉันจะสูญเสียการติดตามสิ่งที่เกิดขึ้นในโค้ดอย่างสมบูรณ์

รอสักครู่ ... ใครก็ตามที่สูญเสียการติดตามโค้ดอย่างสมบูรณ์ด้วยระดับการซ้อนในระดับลึก หรือเป็น Linus Torvalds วางไว้:

หากคุณต้องการการเยื้องมากกว่า 3 ระดับคุณจะถูกเกลียวอยู่แล้วและควรแก้ไขโปรแกรมของคุณ

บางทีฉันควรจะพูดถึงว่ามีความคิดเห็นไม่มากในรหัสและชื่อก็ไม่ง่ายนัก

สิ่งนี้ไม่ได้ดูเหมือนว่า บริษัท ของคุณจะปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดทั่วไป

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

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

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


ปัญหาการเยื้องอาจเลวร้ายยิ่งกว่า: เมื่อภาษาเป็นโค้ดคอลัมน์ (เช่นสมมุติ) และไม่มีการเยื้องจริง เครื่องมือบางอย่างพยายามที่จะแก้ไขปัญหานี้ ...
Clockwork-Muse

2

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

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


2

คุณอาจลองแปลบางส่วนจาก Python เป็น pseudo-Haskell หรืออะไรก็ตามที่คุณชอบ ที่สามารถให้ความรู้สึกกับสิ่งที่จำเป็นสำหรับการก่อสร้างแผนที่หลวม ๆ ในสิ่งก่อสร้างที่ใช้งานได้ เมื่อคุณได้รับประสบการณ์มากขึ้นสิ่งก่อสร้างที่จำเป็นจะเริ่มรู้สึกพื้นเมืองมากขึ้น

ฉันไปจากการเขียนโปรแกรม OCaml และ Haskell ไปจนถึงการเขียนโปรแกรม Java และ Python และประสบการณ์ของฉันก็คือการเขียนโปรแกรมที่จำเป็นนั้นไม่ได้เป็นการก้าวกระโดดที่ยิ่งใหญ่เท่ากับการพิมพ์แบบไดนามิกซึ่งจนถึงทุกวันนี้


1

ฉันขอแนะนำให้คุณใส่จุดพักและเริ่มใช้คำสั่งถัดไป (ราวกับว่าคุณกำลังดีบั๊ก) สิ่งนี้จะช่วยให้คุณเข้าใจการไหลของข้อมูล แนวคิดทั่วไปของรหัส)

(ฉันมีผลลัพธ์ที่ดีกับEclipseพร้อมกับPyDevเป็นปลั๊กอิน Eclipse)

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