มันสมเหตุสมผลไหมที่จะใช้“ ys” แทน“ ies” ในตัวระบุเพื่อความสะดวกในการค้นหาและแทนที่ฟังก์ชั่น? [ปิด]


9

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


8
สิ่งที่เกี่ยวกับ Childs, mouses, knifes, Wolfes, Mans, Womans, wifes และฟัน? ทุกอย่างถูกต้องในการสั่งซื้อเพื่อหลีกเลี่ยงการหวั่น"สองค้นหาแยกต่างหาก"
Tulains Córdova

3
ผมบางส่วนเพื่อ wolfys กว่า wolfies ตัวเอง ...
จิมมี่ฮอฟฟา

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

10
เชื่อฉันคุณไม่ต้องการใช้การดำเนินการค้นหาและแทนที่บน codebase ขนาดใหญ่สำหรับคำเช่น "บริษัท " โดยไม่มีข้อ จำกัด "คำเต็มคำเท่านั้น" ดังนั้นคุณจะต้องใช้การค้นหาสองแบบแยกกันเช่นกัน
Doc Brown

2
สอง. แยก. ค้นหา
Tulains Córdova

คำตอบ:


24

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

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


11
และด้วยเครื่องมือการเปลี่ยนโฉมใหม่ให้ดีขึ้นการค้นหาและแทนที่แบบโกลบอลตามข้อความเท่านั้นจึงเป็นวิธีที่เชื่อถือได้น้อยที่สุดในการเปลี่ยนชื่อตัวระบุ
Kent A.

สิ่งนี้จะไม่เป็นปัญหาเมื่อใช้การค้นหา "ทั้งคำเท่านั้น" ดังที่ Doc Brown กล่าวถึง
SHNC

6
@ user3047082 การค้นหาคำว่าทั้งหมดจะไม่ตรงกับ "บริษัท" อย่างใดอย่างหนึ่งทำให้คำถามทั้งหมดแทนที่จะไม่มีจุดหมาย ...
เดวิดอาร์โน

6

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


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

ขอบคุณ @Snowman เป็นธรรมชาติของมนุษย์เมื่ออยู่ในพื้นที่ที่ไม่รู้จักเพื่อวางกรอบคำถามตามความคิดของคุณเอง (ไม่มีประสบการณ์) ใช่ในขณะที่ฉันไม่ได้ตอบคำถามจริงข้อสันนิษฐานของฉันเกี่ยวกับสิ่งที่ถูกถามจริงๆนั้นขึ้นอยู่กับเบาะแสอื่น ๆ ในคำถาม พหูพจน์ที่ฉันพบส่วนใหญ่มาจากเครื่องมือการสร้างรหัสเช่น XSD-to-POJO, วิศวกรรมไฮเบอร์เนต / JPA ย้อนกลับจากฐานข้อมูลเป็นต้นโดยพื้นฐานแล้วหากพหูพจน์เหล่านี้อยู่ในรหัสและผู้เขียนไม่ชอบตัวเลือกของ พหูพจน์แล้วพวกเขาส่วนใหญ่ไม่ได้เขียนโดยผู้เขียนและมีแนวโน้มที่สร้างขึ้นโดยอัตโนมัติ
javabeano

-9

ใช่ ใช่ ใช่ มันสมเหตุสมผลที่จะทำเช่นนั้น และฉันทำมาหลายปีแล้ว

การเปิดเผยที่ 1: ภาษาอังกฤษไม่ใช่ภาษาแม่ของฉัน

การเปิดเผย 2: ความรู้เกี่ยวกับไวยากรณ์ภาษาอังกฤษของฉันดีกว่าของเจ้าของภาษาทั่วไปมาก

การเปิดเผยข้อมูล 3: เมื่อพูดถึงการสื่อสารกับมนุษย์ฉันเป็นไวยากรณ์ของนาซีที่โกรธแค้น

และตอนนี้การเปิดเผยเหล่านี้ไม่ได้อยู่ในที่ใดผมขอแจ้งว่าไวยากรณ์ภาษาอังกฤษไม่มีที่อยู่ในโค้ด คุณจะเห็นว่าทำไมมันถูกเรียกว่ารหัสไม่ร้อยแก้ว มันควรจะมีความคล้ายคลึงกับภาษาที่มนุษย์เข้าใจเพื่อจุดประสงค์ในการอ่าน แต่นอกเหนือจากนั้นสิ่งที่เราต้องการจากรหัสส่วนใหญ่ไม่ใช่คุณสมบัติของร้อยแก้ว; มันเป็นเรื่องอื่น ๆ คุณสมบัติทางเทคนิคมากขึ้นเช่นความแม่นยำ , ความไม่น่าสงสัยและรวบรัด นั่นเป็นเหตุผลที่ไวยากรณ์ซีif( x != y ) y++;เป็นมากที่นิยมในการIF X IS NOT EQUAL TO Y THEN ADD 1 TO Y END-IF.ไวยากรณ์ของภาษาโคบอล ความปรารถนาที่ถูกกล่าวหาของคอมไพเลอร์ที่เข้าใจภาษาธรรมชาตินั้นเป็นความเข้าใจผิดและไม่นำคำพูดของฉันไปใช้ดูสิ่งที่ ol'Edsger พูดถึง:Edsger Dijkstra ดับบลิว, ในความโง่เขลาของ "การเขียนโปรแกรมภาษาธรรมชาติที่"

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

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

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

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


7
1. ดัชนีและดัชนีเป็นทั้งพหูพจน์ของดัชนีที่ถูกต้อง คุณจะเข้าใจผิดในความเชื่อของคุณว่ามีเพียงหนึ่งถูกต้องเช่นโปรดดูoxforddictionaries.com/definition/english/index 2. private X ที่สามารถอ่านผ่าน getX และเขียนไปยังผ่าน setX ไม่ใช่ส่วนตัว มันเป็นคุณค่าสาธารณะ 3. รหัสคือเอกสารการออกแบบ มันแจ้งคอมไพเลอร์เกี่ยวกับวิธีการสร้าง "รหัสเครื่อง" แต่ที่สำคัญกว่านั้นคือมันอธิบายการออกแบบในแบบที่คนอื่นสามารถอ่านได้ง่าย ความสามารถในการอ่านเป็นหนึ่งในสองสิ่งที่สำคัญที่สุดในการเขียนโค้ด
David Arno

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

3
แม้ว่าภาษาอังกฤษอาจไม่ใช่ภาษาแม่ของคุณ แต่อาจเป็นบุคคลต่อไปที่อ่านรหัสของคุณ มันอาจจะทำให้คนอื่นสับสนในภาษาแม่ของคุณที่เรียนภาษาอังกฤษด้วย
Andy

2
หรือคุณเพียงจะทำร้ายผู้ที่คู่ใช้เวลาเมื่อมันควรจะเป็นCompanys Companiesท้ายที่สุดแล้วจุดทั้งหมดของรหัสที่เราเขียนมักเป็นจริงเพื่อให้ใกล้เคียงกับภาษาธรรมชาติ
Andy

2
อะไรก็ตามที่ฉันพบกระดาษที่เต็มไปด้วยอึ รหัสอยู่ระหว่างภาษาธรรมชาติและไบต์ หากไม่ใช่เพื่อความเข้าใจที่ถูกต้องเกี่ยวกับรหัสมนุษย์ก็ไม่มีเหตุผลใด ๆ ที่จะไม่เพียงแค่ป้อนรหัสไบต์โดยตรง
Andy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.