“ A”,“ an” และ“ the” ในชื่อเมธอดและฟังก์ชัน: คุณใช้อะไร? [ปิด]


16

ฉันแน่ใจว่าพวกเราหลายคนเคยเห็นชื่อวิธีการเช่นนี้ในจุดหนึ่งหรืออื่น ๆ :

  • UploadTheFileToTheServerPlease
  • CreateATemporaryFile
  • WriteTheRecordToTheDatabase
  • ResetTheSystemClock

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

  • UploadFileToServer
  • CreateTemporaryFile
  • WriteOutRecord
  • ResetSystemClock

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

ดังนั้นคุณอยู่ใน "ชื่อเมธอดที่อ่านเหมือนร้อยแก้ว" หรือ "เมธอดชื่อที่พูดในสิ่งที่ฉันหมายถึง แต่อ่านออกมาดัง ๆ เช่นการแปลภาษาต่างประเทศเป็นภาษาอังกฤษที่ไม่ดี" ค่าย?


7
WriteTheRecordToTheDatabaseฉันไม่เคยเห็นวิธีการที่มีชื่อเหมือน หากมีคนตรวจสอบสิ่งนี้ในพวกเขาจะได้รับการพูดคุยอย่างจริงจัง
ทิมโรบินสัน

13
" Please" ว้าว
กำหนดค่า

3
ฉันแค่ต้องการที่จะเพิ่ม wordpress ที่มีฟังก์ชั่นผู้ช่วยแม่แบบเช่น "the_contents ()," "get_the_post ()," ฯลฯ มันบั๊กอึออกมาจากฉัน
Carson Myers

1
@Carson Myers Hah นั่นเป็นตัวอย่างที่สมบูรณ์แบบในโลกแห่งความเป็นจริง ฉันต้องระงับความทรงจำในครั้งสุดท้ายที่ฉันดู WordPress code :-)
Mike Spross

คำตอบ:


21

ฉันจะยอมรับว่าวิธีการร้อยแก้วดูดด้วยข้อยกเว้นหนึ่ง:

กรณีทดสอบหน่วย

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

  • กำลังเพิ่ม ACAC ของลูกค้า OrderWhenCustomersIdIsInvalid: ล้มเหลว
  • OutOfBoundsPriceReturnsAnError: Passed
  • CanDeleteAnEventFromASeason: ผ่านแล้ว

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


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

มีประโยชน์และเหมาะกับMethodUnderTest_Condition_ExpectedBehaviour แผนการตั้งชื่อการทดสอบหน่วยที่แนะนำของ Roy Osherove เช่นAddOrder_WithInvalidCustomerId_Fails, CreateItem_WithOutOfBoundsPrice_ReturnsErrorและDeleteEvent_EventExistsInSeason_Succeeds
StuperUser

@ SuperUser สำหรับพฤติกรรมที่คาดหวังของคุณจริง ๆ แล้วใส่ผลการทดสอบที่คาดไว้และทำให้ฉันไม่รู้ว่าวิธีการที่ควรจะกลับ
ediblecode

@danRhul จุดประสงค์ฉันไม่ชัดเจนพอ .._AdditionFailsและ.._DeletionSucceedsควรจะดีกว่า ฉันใส่ผลลัพธ์ของวิธีการ แต่เมื่อคุณชี้ให้เห็นว่าพวกเขาอาจสับสนกับการทดสอบคำศัพท์การผ่าน / ความล้มเหลว
StuperUser

10

เพื่อถอดความ Lawrence จาก Office Space ...

ไม่ไม่ฉันเชื่อว่าถ้ามีคนที่ฉันทำงานด้วยแถวนี้ชื่อฟังก์ชั่น


10

ดังกล่าว "ยาว" ชื่อไม่ได้เสียงเหมือนร้อยแก้ว เมื่ออยู่ตามลำพัง - บางที แต่มาพร้อมกับรหัสที่เหลือพวกเขาแค่ทำเลอะมากกว่า ลองดูสิ:

bool ResultOfTheUpload
      = UploadTheFileToTheServerPlease(TheNameOfTheFile, TheServersAddress);

Yuuuuk! ..

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


1
ตัวอย่างที่ดีว่าทำไมฉันถึงไม่ชอบแนวทางนี้มาก! เมื่อฉันเขียนคำถามฉันเพียง แต่จดจ่อกับชื่อวิธีด้วยตัวเองที่ฟังดูเหมือนเป็นร้อยแก้ว แต่ฉันเห็นด้วยกับคุณ: มันค่อนข้างยากที่จะทำให้รหัสการโทรอ่านจริง ๆ เช่นร้อยแก้วดังนั้นจึงไม่มีจุดในการตั้งชื่อฟังก์ชั่น อังกฤษ
Mike Spross

3
ฉันแนะนำbool ResultOfTheGentlyUploadOfTheFileToTheServer
Wizard79

ฉันได้ทำงานกับคนที่สร้างมาตรฐานของ บริษัท ที่ต้องปฏิบัติตาม 'theVariable' และ 'aMethod' บุคคลเดียวกันนี้ก็ชอบที่จะมีทุกบรรทัดของรหัสบรรทัดขึ้นในแนวตั้ง
Chris

7

จากมุมมองของโปรแกรมเมอร์ "UploadFileToServer" เหมาะสมและง่ายต่อการอ่านและทำความเข้าใจมากกว่า "UploadTheFileToTheServerPlease"

มากกว่าไวยากรณ์ภาษาอังกฤษการอ่านและความเข้าใจในการเขียนโปรแกรมมีความสำคัญมากกว่า!


เห็นด้วยทั้งหมด .. ถ้าฉันอ่านโค้ดที่เขียนในรูปแบบแรก ๆ สองสามวันฉันมั่นใจว่ามันจะทำให้ฉันบ้าไปแล้ว ..
Naveen

@ Naveen: ฉันได้ทำงานกับรหัสเช่นนี้และโอกาสแรกที่ฉันได้ฉันเปลี่ยนชื่อวิธีการเหล่านั้นทั้งหมด และฉันไม่แน่ใจว่ามันเป็นเพียงแค่นักพัฒนาหรือไม่ แต่ผมคิดว่ามีแนวโน้มที่จะฟังก์ชั่นให้ทำในสิ่งที่หลายคนเมื่อคุณเขียนพวกเขาเป็นประโยคเช่นUploadTheFileAndProcessItAndEmailTheOrdersToTheCustomersแต่ไม่มีอะไรหวังว่าค่อนข้างเลวร้ายในชีวิตจริง
Mike Spross

@ ไมค์แล้วฉันจะ refactor วิธีการ 2 วิธีที่แตกต่างกัน;)
Gopi

2

ด้วยจำนวนความผิดพลาดในชีวิตของฉันฉันจะจบลงด้วยการ

* UploadTehFileToTehServerPleaz
* WriteTehRecordToTehDatabase
* ResetTehSystemClock
* ICanHazTehCheezburger

อย่างจริงจังฉันก็จะดูว่าชื่อชั้นของฉันเป็นอย่างดี ถ้าชั้นเรียนของฉันถูกเรียกว่า "ไฟล์" ฉันอาจจะไปกับ

*UploadToServer
*DownloadFromServer

ดังนั้นมันจะเป็น

   File file = new file;
   file.UploadtoServer(ServerAddress);

เป็นเพียงตัวอย่างเล็ก ๆ น้อย ๆ แต่หวังว่ามันจะเป็นตัวอย่างที่ดีพอ


ฮิฮิ. ฉันเคยเห็น "Teh" คืบคลานเข้าไปในชื่อวิธีการตามรูปแบบการตั้งชื่อ "เหมือนภาษาอังกฤษ" สำหรับจุดที่สองของคุณ: ฉันเห็นด้วยอย่างมากความซ้ำซ้อนในชื่อเมธอดเป็นสัตว์เลี้ยงอีกตัวหนึ่งของฉัน ( File.UploadFileToServer... ฮึ)
Mike Spross

0

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

และฉันอยากจะเห็นมากกว่า "UL_FlToSrv"

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