คุณชื่อฟังก์ชัน / ตัวแปร / ฯลฯ อะไรเมื่อคุณนึกชื่อไม่ออก [ปิด]


13

เมื่อคุณกำหนดฟังก์ชั่น / ตัวแปร / ฯลฯ และไม่แน่ใจว่าจะตั้งชื่ออะไรคุณตั้งชื่ออะไร คุณสร้างชื่อขึ้นมาได้อย่างไร?

หากคุณใช้ชื่อชั่วคราวเป็นบัตรสถานที่จนกว่าคุณจะให้มันเป็นชื่อจริงคุณใช้ชื่ออะไรชั่วคราว


ปรับปรุง

ฉันได้ใช้สิ่งที่ชอบWILL_NAME_LATER, หรือNEEDS_NAME TO_BE_NAMEDฉันหวังว่าจะมีการประชุมที่เป็นลูกบุญธรรมจริง ๆ แล้วฉันหวังว่าถ้าฉันใช้การประชุมที่นำมาใช้นี้ IDE ของฉันจะเน้นชื่อจนกว่าฉันจะเปลี่ยนมัน


ระวังเกี่ยวกับการใช้ตัวพิมพ์ใหญ่ทั้งหมดสำหรับชื่อตัวแปร ตามแบบแผนนิยมมันหมายถึงตัวแปรทั่วโลก
spong

@Sunpech ฉันรู้ว่าฉันใช้การตั้งชื่อแบบแผนสำหรับค่าคงที่เช่นกัน แต่ฉันคิดว่าการใช้อักษรตัวพิมพ์ใหญ่ทำให้มันโดดเด่นดังนั้นฉันไม่ลืมที่จะเปลี่ยนชื่อ ฉันไม่ทิ้งชื่อไว้นานขนาดนี้
JD Isaacks

3
สำหรับทุกคนที่คุณกำลังพูดคุณไม่ควรมีปัญหาในการหาชื่อ ... แม้แต่Jon Skeetบางครั้งก็ไม่สามารถ: stackoverflow.com/questions/521893/…
JD Isaacks

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

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

คำตอบ:


29

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

สมมติว่าคุณมีบางอย่างที่ช่วยคุณสร้างวัตถุ แต่คุณไม่รู้ว่าสิ่งนี้เรียกว่าโรงงาน เพียงแค่เรียกมันว่า ObjectCreator ฟังดูป้าน แต่อย่างน้อยก็ชัดเจน

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

การไร้ความสามารถในการสร้างชื่อให้กับสิ่งนั้นหมายความว่าคุณไม่รู้ว่ากำลังทำอะไรอยู่ซึ่งหมายความว่าคุณมีปัญหามากขึ้นต่อหน้าคุณ


8
ฉันต้องการตบผู้ที่บ่นเกี่ยวกับตัวระบุว่ายาวเกินไปเสมอ (เมื่อพวกเขามีเพียงสามหรือสี่คำ) เราไม่ควร จำกัด ความเร็วในการพิมพ์และถ้าเป็นเช่นนั้นเราควรไปที่ABCDและเรียนรู้ที่จะพิมพ์!
dash-tom-bang

1
+1 "The inability to come up with a name for something means you don't know what it is doing"เพราะ ฉันคิดว่านี่เป็นจุดสำคัญจริงๆ การตระหนักถึงสิ่งนี้จะช่วยให้คุณค้นหาความคลุมเครือและความไม่ชัดเจนในโค้ด
BiAiB

34

ฉันพยายามให้ตัวแปรและฟังก์ชั่นชื่อที่ดีเสมอ

ถ้าฉันไม่สามารถคิดเป็นชื่อที่ดีฉันจะชำระสำหรับชื่อที่ดี

ถ้าฉันไม่สามารถเกิดขึ้นกับชื่อที่ดีผมจะใช้ชื่อโอเค

ใน 15 ปีของการเขียนโปรแกรมมืออาชีพฉันไม่เคยคิดชื่อที่เหมาะสมมาก่อน


6
+1 สำหรับการเป็นเช่นบทกวี
spong

1
... อย่างไรก็ตาม 15 ปีกับ 6 เดือนที่ผ่านมาเกิด Microsoft Bob
VirtuosiMedia

12

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


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

3
@sunpech ขอโทษฉัน แต่นี่น่ากลัวนิดหน่อย คุณพยายามที่จะบอกเราว่ามันเป็นเรื่องธรรมดาที่จะเขียนโค้ดแบบสุ่มโดยไม่รู้ว่ามันทำอะไรจริงหรือ หากคุณไม่รู้อะไรเลยลองใช้ความพยายามในการค้นหาและคุณจะหลีกเลี่ยงปัญหาในอนาคต
Adam Byrtek

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

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

1
@sunpech: ที่เดียวที่ฉันเคยเห็นfooและbarใช้งานจริงในรหัสคือโค้ดขนาดเล็กที่ใช้แสดงแนวคิด แน่นอนว่าฉันสะดุดเมื่อคิดชื่อ แต่ฉันไม่เคยจบลงในตำแหน่งที่ไม่ดีเช่นนี้ซึ่งfooเป็นตัวเลือกที่สมเหตุสมผลเท่านั้น หากเกิดขึ้นฉันก็ไม่รู้จริงๆว่าฉันกำลังทำอะไรอยู่และต้องกลับไปที่กระดานวาดรูปและรหัสหลอกแทนจนกระทั่งฉันรู้ว่าจะต้องทำอะไร
gablin

5

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

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

Iterators ควรเรียกว่า i ตัววนซ้ำที่ซ้อนกันน่าจะเป็นความผิดพลาด แต่ถ้าคุณต้องการก็ให้เดินผ่านสระที่เหลือตามลำดับ (a, e, o, u, และพระเจ้าช่วยฉันใช่บางครั้ง y)

นอกเหนือจากนั้นเพียงแค่เรียกสิ่งที่มันเป็นและจะทำกับมัน!


9
ฉันต้องประท้วง! เห็นได้ชัดว่า iterator ภายในควรจะเรียกว่าเจและเป็นหนึ่งในภายในว่าk ประเพณีทางคณิตศาสตร์ที่ยาวนานมานี้มองข้ามไหล่ของคุณ!
Frank Shearar

ฮะ. ฉันไม่เคยทำ j และ k ฉันเห็นว่ามันสมเหตุสมผล
Dan Ray

8
เหตุผลหนึ่งที่ Dijkstra นั้นเป็นธรรมชาติที่เหมาะสมสำหรับวิทยาการคอมพิวเตอร์คือชื่อของเขานั้นรวมตัวแปรตัววนซ้ำที่พบบ่อยที่สุดสามตัวตามลำดับที่ถูกต้อง
glenatron

3
@glenatron: ในที่สุดวิธีที่จะจำวิธีการสะกดชื่อนั้น!
กำหนดค่า

4

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


3

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


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

1
@sunpech อย่างจริงจังแม้ว่าตอนแรกที่เริ่มงานที่มีโดเมนเฉพาะค่อนข้างฉันไม่ได้มีปัญหาในการหาชื่อฟังก์ชั่น บางทีฉันอาจต้องเขียนฟังก์ชั่นเพิ่มเติม :)
Adam Lear

1
@sunpech: คุณจะเขียนฟังก์ชั่นได้อย่างไรโดยไม่รู้ว่ามันทำอะไร?
ปรับแต่งค่า

4
@sunpech: ฉันไม่ได้พูดอย่างนั้น ฉันแค่บอกว่าคุณไม่สามารถเขียนฟังก์ชั่นโดยที่ไม่รู้ว่ามันกำลังทำอะไรอยู่ มันเป็นไปไม่ได้. ฉันไม่เคยเห็นมันเกิดขึ้นและฉันไม่เห็นว่ามันจะเกิดขึ้นได้อย่างไร บางทีฉันอาจบ้าคลั่ง แต่เมื่อคุณตั้งชื่อฟังก์ชั่น DoFoo () คุณจะใส่อะไรลงไปในนั้น?
กำหนดค่า

2
@sunpech: ฉันไม่เคยพูดชื่อจะต้อง 'ดี' ตั้งแต่เริ่มต้น ฉันแค่ไม่เห็นว่าคุณจะเข้ามาในสถานการณ์ที่คุณต้องการสร้างฟังก์ชั่นได้อย่างไร แต่คุณไม่รู้ว่ามันกำลังจะทำอะไร
กำหนดค่า

2

fooและบาร์ เนื่องจากไม่มีความหมายที่อยู่เบื้องหลังการตั้งชื่อฟังก์ชั่น / ตัวแปรฉันยังใช้การผสมผสานระหว่าง Foo และ / หรือ Bar กับสิ่งที่ฉันพยายามกำหนด

มันทำให้ง่ายต่อการค้นหา / ค้นหาในภายหลังเมื่อฉันมีความเข้าใจที่ดีขึ้นเกี่ยวกับสิ่งที่ควรตั้งชื่อ

ดูFoobar บนวิกิพีเดียด้วย

คำว่า foobar, foo, bar และ baz บางครั้งใช้เป็นชื่อตัวยึดตำแหน่ง (หรือเรียกว่าตัวแปร metasyntactic) ในการเขียนโปรแกรมคอมพิวเตอร์หรือเอกสารที่เกี่ยวข้องกับคอมพิวเตอร์ พวกมันถูกใช้เพื่อตั้งชื่อเอนทิตีเช่นตัวแปรฟังก์ชั่นและคำสั่งที่มีจุดประสงค์ไม่สำคัญและให้บริการเพียงเพื่อแสดงแนวคิด คำว่าตัวเองไม่มีความหมายในการใช้งานนี้ บางครั้งก็ใช้ Foobar คนเดียว; บางครั้ง foo, bar และ baz จะถูกใช้ในลำดับนั้นเมื่อต้องการหลายเอนทิตี


1

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


แน่นอนในกรณีนี้คุณควรตั้งชื่อฟังก์ชั่นSaveAllProductsForTheSelectedUserToTheDatabase()
กำหนดค่า

1

อะไรก็ตามที่ฉันเรียกว่าตัวแปรตั้งชื่อยากเหล่านี้ฉันจะ //TODO find a better nameแสดงความคิดเห็นเพื่อให้ฉันสามารถย้อนกลับไปเพื่อเปลี่ยนชื่อได้ในภายหลัง

โดยปกติเมื่อฉันเริ่มใช้ตัวแปร / ฟังก์ชั่น / ชั้นฉันพบชื่อที่ดีกว่าสำหรับพวกเขา


0

เป็นการดีที่สุดที่จะใส่ชื่อที่ดีในเร็ว ๆ นี้ในขณะที่คุณมีรหัสในใจมากกว่าที่จะรอจนกว่าต่อมาเมื่อคุณจะคิดว่าคุณมีชื่อที่ดี!


0

ฉันแทบจะไม่เคยมีปัญหาในการค้นหาชื่อที่สื่อความหมายได้ดี .. แต่บางครั้งการตั้งชื่อซ้ำซ้อนมากในชื่อคลาสและชื่อตัวแปรนั้นคล้ายกันมาก WebClient webclient = ใหม่ Webclient (uri); ... และไม่ชอบ


0

บางครั้งฉันใช้ zzzz ชั่วคราว

กฎที่ดีที่จะช่วยคุณคือ:

  • มันส่งคืนบูลีนและไม่มีผลข้างเคียง: จากนั้นใช้คำคุณศัพท์ (เริ่มต้นด้วยคือเคย) แต่ไม่เครียดในอนาคต
  • มันส่งคืนชนิดที่แตกต่างและไม่มีผลข้างเคียง: จากนั้นใช้คำนาม
  • มันไม่ทำอะไรเลยนอกจากทำบางสิ่ง: จากนั้นใช้คำกริยา
  • มันเป็นคลาส: จากนั้นใช้คำนาม

-1

ในอดีตที่ผ่านมาฉันใช้บ็อบมาก แต่นี่จะเป็นตัวแปรเดียวที่ไม่ได้รับการตั้งชื่ออย่างถูกต้องในฟังก์ชั่น / สคริปต์เพราะมิฉะนั้นโค้ดจะไม่สามารถอ่านได้อย่างรวดเร็ว

(bob เป็นอาการเมาค้างจาก uni วัน - ออกไปพร้อมกับตัวแปรการโทร bob และ fred)

ฉันยินดีที่จะใช้ฉันเป็นเคาน์เตอร์

ดีกว่าที่จะใช้ชื่อที่มีความหมายแม้ว่าพวกเขาจะไม่สั้นและเร็ว


ฉันเคยทำงานกับผู้ชายที่ใช้ชื่ออย่างนั้นสำหรับแอปพลิเคชันและชั้นเรียนของเขาภายในแอปพลิเคชันของเขา บางทีรหัสของเขาก็แย่มาก
dash-tom-bang

2
@ dash-tom-band: ฉันคิดว่ารหัสของเขาโดยทั่วไปบ๊อบมาก
ปรับแต่งค่า

หากฉันสามารถใช้ชื่อของฉันเป็นสัญกรณ์ฮังการีสำหรับการแจงนับฉันมักจะทำมันแม้ว่าจะยืดออกเล็กน้อย TPropertyEnhancmentTypeEditor = (PETEObtuse, PETEAwful, PETEDispicable);
Peter Turner

-1

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





-3

ฉันมักจะใช้ของบนโต๊ะ

  • ถ้วย
  • Alt
  • ฟู
  • b / a / c (ขยะจดหมายเดี่ยว)
  • alk (อีเมลขยะที่มีหลายตัวอักษรออกเสียง)

ฉันยังพึ่งพาชื่อสามัญ (อย่างน้อยฟังก์ชั่น):

  • แลกเปลี่ยน
  • กระบวนการ
  • reviseVar
  • คนจรจัด

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

...


ฉันมักจะรู้สึกสกปรก แต่บางครั้งชื่อที่ชัดเจนที่สุดสำหรับวิธีคือ "Go" หรือ "DoIt" เมื่อใดก็ตามที่ฉันสามารถสร้างชื่อที่ดีขึ้นได้ฉันก็ทำ แต่บางครั้งมันก็คือ "ทำงานที่ชื่อของโปรแกรมนั้นกำลังจะเกิดขึ้น" อย่างไรก็ตามนั่นยาวเกินไปที่จะใช้สำหรับชื่อฟังก์ชัน :)
dash-tom-bang

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