ใส่คำอธิบายประกอบซอร์สโค้ดที่มีไดอะแกรมเป็นความคิดเห็น


14

ฉันเขียนโค้ด (c ++ และ javascript) เป็นจำนวนมากซึ่งสัมผัสกับเรขาคณิตและกราฟิกการคำนวณและหัวข้อเหล่านั้นดังนั้นฉันจึงพบว่าไดอะแกรมภาพนั้นเป็นส่วนที่ขาดไม่ได้ของกระบวนการแก้ปัญหา

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

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

ดังนั้น...

ไม่มี IDE ให้ความรู้ของฉันช่วยให้คุณบันทึกภาพเป็นความคิดเห็นในการรหัส

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

หากกระบวนการแปลง / แทรกสามารถเพิ่มความคล่องตัวได้มากพอจะทำให้สามารถเชื่อมต่อระหว่างไดอะแกรมและรหัสจริงได้ดีกว่าดังนั้นฉันไม่จำเป็นต้องค้นหาตามลำดับเวลาในโน้ตบุ๊คของฉันอีกต่อไป น่าประทับใจยิ่งกว่า: ปลั๊กอินสำหรับ IDE ในการแยกวิเคราะห์และแสดงภาพโดยอัตโนมัติ ไม่มีอะไรยากเกี่ยวกับสิ่งนี้จากมุมมองทางทฤษฎี

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

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


4
อีกทางเลือกหนึ่ง: แสดงความคิดเห็นในลิงก์ไปยังไฟล์รูปภาพในเครื่องที่เปิดขึ้นในโปรแกรมดูรูปภาพเริ่มต้น
Hand-E-Food

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

@ Hand-E-Food ดีมาก! URL ไฟล์ในความคิดเห็นจะแสดงเป็นลิงก์แบบคลิกได้ใน Xcode นอกกรอบ การร้องเรียนเพียงอย่างเดียวของฉันคือสิ่งนี้ดูเหมือนว่าเป็นไปไม่ได้ที่จะสร้าง URL ไฟล์พา ธ สัมพัทธ์ดังนั้นการแบ่งลิงก์ที่สามารถคลิกได้ (ในโอกาสทั้งหมด) เมื่อเปลี่ยนระบบ
สตีเวนลู

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

ฉันทำ javadoc ซึ่งจะสร้าง HMTL ด้วยรูปภาพ หรือ SimpleDocBook เอกสารแยกต่างหากอิง XML หนึ่งสามารถ / ต้องอ้างอิงในรหัสสำหรับกฎธุรกิจ นั่นเป็นงานประพันธ์ที่ดีและครอบคลุมระบบด้วยมุมมองของตรรกะทางธุรกิจทั้งหมดแทนที่จะเผยแพร่ส่วนประกอบซอฟต์แวร์และเลเยอร์ (คลาส) คำขอเปลี่ยนแปลงทุกรายการเพิ่มรหัสพร้อมกับอ้างอิงถึง docbook + หมายเลขรุ่น / ตั๋วและ docbook มีรายการการเปลี่ยนแปลง + หมายเลขตั๋ว ใช้งานได้เนื่องจากความครอบคลุมที่สมบูรณ์ ไม่แน่ใจว่ามันจะเหมาะกับสถานการณ์ของคุณอย่างไร
Joop Eggen

คำตอบ:


6

สิ่งที่เกี่ยวกับภาพแทรกปลั๊กอินสำหรับ Visual Studio ?

หากคุณกำลังใช้ IDE ที่แตกต่างกันและอาจไม่รองรับภาพที่ฝังอยู่หรือคุณไม่มีเวลาที่จะขยายมันดังนั้นการวางลิงค์ไปยังภาพในความคิดเห็นในขณะที่ภาพนั้นจะอยู่ที่อื่นในที่เก็บ ?


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

การบันทึกรูปภาพลงใน repo จะทำงานกับวิธีการเรียกดู repo ส่วนใหญ่ (เช่น VCS repo เว็บอินเตอร์เฟส)
Steven Lu

4

หากคุณไม่ใช่ศิลปิน ASCIIคุณสามารถใช้doxygenเป็นเครื่องมือเอกสารร่วมกับdot / graphviz ที่รวมเข้ากับมัน

สิ่งนี้ยอมให้เขียนคำอธิบายที่เป็นข้อความของกราฟและแสดงในเอกสาร

ตัวอย่างเช่นคำอธิบายนี้:

digraph finite_state_machine {
    rankdir=LR;
    size="8,5"
    node [shape = doublecircle]; LR_0 LR_3 LR_4 LR_8;
    node [shape = circle];
    LR_0 -> LR_2 [ label = "SS(B)" ];
    LR_0 -> LR_1 [ label = "SS(S)" ];
    LR_1 -> LR_3 [ label = "S($end)" ];
    LR_2 -> LR_6 [ label = "SS(b)" ];
    LR_2 -> LR_5 [ label = "SS(a)" ];
    LR_2 -> LR_4 [ label = "S(A)" ];
    LR_5 -> LR_7 [ label = "S(b)" ];
    LR_5 -> LR_5 [ label = "S(a)" ];
    LR_6 -> LR_6 [ label = "S(b)" ];
    LR_6 -> LR_5 [ label = "S(a)" ];
    LR_7 -> LR_8 [ label = "S(b)" ];
    LR_7 -> LR_5 [ label = "S(a)" ];
    LR_8 -> LR_6 [ label = "S(b)" ];
    LR_8 -> LR_5 [ label = "S(a)" ];
}

แสดงผลเป็น:

ป้อนคำอธิบายรูปภาพที่นี่


มันเจ๋งมาก! เครื่องมือใด ๆ ที่รองรับสภาพแวดล้อม Java? ฉันไม่สามารถเห็นการสนับสนุนคล้ายอะไรสำหรับใน Mojo นี้เช่น: graphviz-maven-plugin.bryon.us/dot-mojo.html ส่วนสิ่งอื่น ๆ ก็แค่รองรับไฟล์. dot
oligofren

2

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

นี่คือหน้าจอโหมดศิลปินที่ใช้ดังนั้นคุณสามารถรับแนวคิดได้หากคุณสนใจหรือไม่

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


ว้าวนั่น ... ประทับใจ จริงๆแล้วฉันมีความเห็นสไตล์ไดอะแกรม ASCII สองสามอันในรหัส มันใช้เวลานานเกินไป ฉันจะต้องการใช้เครื่องมือที่ดีกว่าเพราะเทคโนโลยีอยู่ที่นี่แล้ว ฉันเคยเขียนโค้ดใน Vim บางครั้ง แต่สคริปต์การรับรู้โค้ดที่ฉันสั้นลงเมื่อเทียบกับ IDE จริง แต่ขอบคุณที่แสดงให้ฉันเห็นเทคนิคโรงเรียนเก่านี้!
สตีเวนลู

เยี่ยมชมไม่กี่ปีต่อมาและฉันได้รวบรวมสารพัด Vim สักสองสามอย่างเพื่อช่วยในการประกอบไดอะแกรมกล่องอย่างรวดเร็ว ไม่ว่าจะเป็น ascii หรือ unicode box ตัวอักษรนี่เป็นวิธีที่เจ๋งมากในการตกแต่งโค้ดด้วยความคิดเห็นที่มีประโยชน์และยอดเยี่ยม เป็นกลุ่มไม่ได้มาพร้อมกับมันออกมาจากกล่อง
Steven Lu

1

คนอื่นคิดอย่างไร ใครบ้างที่จ่ายสำหรับสิ่งนี้ ฉันจะ

ZOMG ฉันพอดีกับหมวดหมู่ที่คล้ายกันในขณะที่คุณและชอบคุณลักษณะดังกล่าวโดยตรงใน IDE

ตอนนี้ฉันแค่ทำ ASCII "ศิลปะ" แบบนี้:

// ******************************************************
// *v3            |e5          v4*           |e6      v6*
// *              |              *           |          *
// *              |              *           |          *
// *              |              *           |          *
// *              |              *           |p1        *
// *              |            e1*-----------~----------*
// *              |              *           |          *
// *              |              *           |          *
// *              |              *           |          *
// *              |              *           |          *
// *cen           |p0          v0*           |        v5*
// *--------------~--------------************************
// *e4            |              *           |e7        *
// *              |              *           |          *
// *              |              *           |          *
// *              |              *           |          *
// *              |              *           |p2        *
// *              |            e2*-----------~----------*
// *              |              *           |          *
// *              |              *           |          *
// *              |              *           |          *
// *              |              *           |          *
// *v2            |e3          v1*           |e8      v7*
// ******************************************************

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

มีหลายสิ่งหลายอย่างที่ง่ายต่อการสื่อสารด้วยภาพและไม่จำเป็นต้องใช้กราฟ ตัวอย่าง:

ป้อนคำอธิบายรูปภาพที่นี่

... หรือสิ่งนี้ (เปรียบเทียบอัลกอริทึมของฉันฉันกำลังเรียก "hook subdivision" กับส่วนย่อย CC มาตรฐานที่ใช้โดย Pixar):

ป้อนคำอธิบายรูปภาพที่นี่

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

ดังนั้นฉันจึงมีความฝันที่จะมี IDE ที่ให้ฉันดูโค้ดและภาพเคียงข้างกันทำให้ฉันสามารถฝังรูปภาพลงในซอร์สโค้ดได้

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

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

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

ใครบ้างที่จ่ายสำหรับสิ่งนี้ ฉันจะ

ดังนั้นใช่เลยโดยสิ้นเชิง! ฉันต้องการสิ่งนั้น!!!


1
รูปภาพที่ยอดเยี่ยมและขอบคุณสำหรับการเขียน (แม้ว่ามันอาจจะเป็นความคิดเห็นมากกว่าคำตอบ)! ฉันเพิ่งตัดสินใจที่จะหยุดพักจากกราฟิกที่ยอดเยี่ยมและสิ่งจำลองสถานการณ์และสร้างเครื่องมือการดีบักและติดตามรุ่นต่อไป สิ่งที่คุณฝันถึงมีความคล้ายคลึงกับสิ่งที่ฉันฝันถึง ....
สตีเวนลู

1
@StevenLu ฉันฝันที่จะทำ IDE แบบนี้บ่อยๆที่คุณเสนอให้กับ visual debugger (แม้ว่าฉันกำลังคิดว่าจะทำมันตั้งแต่ต้นเพราะฉันไม่สามารถจินตนาการโซลูชันปลั๊กอินที่ทำงานด้าน debugger ได้ดี) แต่ใช่ - ฉันเดาว่าคำตอบนั้นเป็นความคิดเห็น ... แต่ฉันมีความสุขมากที่เห็นคนอื่นที่ต้องการ เพื่อนร่วมงานของฉันในอดีตมีประเภทของเทคโนโลยีและคณิตศาสตร์มากขึ้น - พวกเขาไม่เข้าใจความต้องการของฉันในการสื่อสารทุกอย่างที่มองเห็นได้

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

0

เสียงเหมือนกรณีใช้งานสำหรับการเขียนโปรแกรม Literateซึ่งคุณสามารถเพิ่มไดอะแกรมและอะไรก็ได้ในเอกสารของคุณ


ทำไมต้องลงคะแนน?
Reinstate Monica - M. Schröder

ฉันยกระดับคุณ มันเป็นการสังเกตที่ดีมากสิ่งที่ฉันพูดถึงเกือบทั้งหมดตกอยู่ภายใต้ร่มนั้น
Steven Lu

1
ฉัน downvoted เช่นกันเพราะมันไม่ได้ให้คำตอบจริงๆ เห็นได้ชัดว่าเขาไม่ต้องการเปลี่ยนโปรแกรมทั้งหมดของเขาให้เป็นรูปแบบการเขียนโปรแกรมและแม้ว่าเขาจะทำ แต่การเขียนโปรแกรมเชิงวรรณกรรมเป็นวิธีการเขียนโปรแกรม แต่ก็ไม่ได้หมายความว่าไดอะแกรมและรูปภาพรองรับ
Timmmm

0

Doxygen ช่วยให้คุณสามารถแทรกภาพในความคิดเห็นเช่นนี้:

  /*! Here is a snapshot of my new application:
   *  \image html application.jpg
   */

น่าเสียดายที่ดูเหมือนว่าไม่มี IDEs จะแสดงภาพเหล่านี้แบบอินไลน์ แต่ฉันคิดว่ามันคงไม่ยากเกินไปที่จะเขียนส่วนขยาย VSCode เพื่อทำตัวอย่าง

ผมไม่ยังหานามสกุล VSCode หนึ่งที่มีอยู่แล้วการสนับสนุนนี้มีไวยากรณ์ที่แตกต่างกันcommentimg สิ่งนี้ทำได้ผ่านโฮเวอร์:

VSCode กำลังเพิ่มคุณสมบัติที่อนุญาตให้รูปภาพแบบอินไลน์ - "โค้ดแทรก" - แต่ดูเหมือนว่ายังไม่พร้อม

นี่คือภาพหน้าจอจากส่วนขยายตัวอย่าง (ซึ่งฉันไม่พบจริง ๆ แล้ว - ยังไม่ได้วางจำหน่ายเนื่องจากรหัสสิ่งที่ใส่ API ยังไม่วางจำหน่าย)

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