คำถามติดแท็ก naming

ให้ความหมายและคำอธิบายด้วยจำนวนอักขระน้อยที่สุดในแบบฟอร์มที่ได้รับการยอมรับมากที่สุดจากทีมหรือชุมชนของคุณโดยรวม

2
ชื่อแพ็คเกจควรเป็นแบบเอกพจน์หรือพหูพจน์
บ่อยครั้งที่ในไลบรารีโดยเฉพาะแพ็คเกจประกอบด้วยคลาสที่ถูกจัดระเบียบรอบ ๆ แนวคิดเดียว ตัวอย่าง: XML, SQL, การใช้งานการตั้งค่า, DB ผมคิดว่าเราทุกคนรู้สึกรักธรรมชาติที่แพคเกจเหล่านี้ถูกต้องในเอกพจน์ com.myproject xml . โครงการส่วนเสริมทั้งหมด SQL .Connection com.myproject ผู้ใช้ .User com.myproject ผู้ใช้. UserFactory อย่างไรก็ตามถ้าฉันมีแพ็คเกจที่มีชุดของการใช้งานประเภทเดียว - เช่นงาน, กฎ, ตัวจัดการ, แบบจำลอง ฯลฯซึ่งเป็นที่นิยมมากกว่า? com.myproject ภารกิจ. TakeOutGarbageTask com.myproject ภารกิจ. DoTheDishesTask com.myproject งาน.เพ้นท์เฮาส์เฮาส์ หรือ com.myproject ภารกิจ. TakeOutGarbageTask com.myproject ภารกิจ. DoTheDishesTask com.myproject task .PaintTheHouseTask

19
เหตุใดการตั้งชื่อคอลัมน์คีย์หลักของตาราง“ Id” จึงถือว่าไม่เหมาะสม [ปิด]
ครู t-sql ของฉันบอกเราว่าการตั้งชื่อคอลัมภ์ PK "Id" ของเรานั้นถือว่าเป็นการฝึกที่ไม่ดีโดยไม่มีคำอธิบายใด ๆ เพิ่มเติม เหตุใดการตั้งชื่อคอลัมน์คอลัมน์ "PK" ของตาราง PK จึงถือว่าไม่เหมาะสม
210 sql  naming  tsql 

18
มีข้อแก้ตัวสำหรับชื่อตัวแปรสั้น ๆ หรือไม่?
สิ่งนี้กลายเป็นความสับสนอย่างใหญ่หลวงกับโค้ดเบสที่ฉันกำลังทำงานอยู่ ชื่อตัวแปรหลายชื่อของเรานั้นสั้นและไม่มีคำอธิบาย ฉันเป็นนักพัฒนาเพียงคนเดียวที่เหลืออยู่ในโครงการและไม่มีเอกสารเกี่ยวกับสิ่งที่พวกเขาส่วนใหญ่ทำดังนั้นฉันต้องใช้เวลาเพิ่มเติมเพื่อติดตามสิ่งที่พวกเขาเป็นตัวแทน ตัวอย่างเช่นฉันอ่านโค้ดบางตัวที่อัพเดตนิยามของผิวหน้าออปติคัล ตัวแปรที่ตั้งไว้ที่จุดเริ่มต้นมีดังนี้: double dR, dCV, dK, dDin, dDout, dRin, dRout dR = Convert.ToDouble(_tblAsphere.Rows[0].ItemArray.GetValue(1)); dCV = convert.ToDouble(_tblAsphere.Rows[1].ItemArray.GetValue(1)); ... and so on อาจจะเป็นเพียงฉัน แต่มันก็บอกฉันว่าไม่มีอะไรเกี่ยวกับสิ่งที่พวกเขาเป็นตัวแทนซึ่งทำให้การทำความเข้าใจโค้ดยากขึ้น ทั้งหมดที่ฉันรู้คือมันเป็นตัวแปรที่แยกวิเคราะห์เฉพาะแถวจากตารางที่ระบุที่ไหนสักแห่ง หลังจากการค้นหาบางฉันพบสิ่งที่พวกเขาหมายถึง: dR = radius dCV = curvature dK = conic constant dDin = inner aperture dDout = outer aperture dRin = inner radius dRout …

6
ตัวแปรควรชื่อ Id หรือ ID หรือไม่ [ปิด]
นี่เป็นเรื่องอวดรู้เล็กน้อย แต่ฉันเคยเห็นบางคนใช้Idใน: private int userId; public int getUserId(); และอื่น ๆ ใช้: private int userID; public int getUserID(); หนึ่งในนั้นเป็นชื่อที่ดีกว่าชื่ออื่นหรือไม่? ทำไม? ฉันเคยเห็นสิ่งนี้ทำกันอย่างไม่สอดคล้องในโครงการขนาดใหญ่ ถ้าฉันจะตั้งมาตรฐานที่คนส่วนใหญ่จะคุ้นเคยกับ? มาตรฐานดั้งเดิมคืออะไร?

13
คุณใช้“ แผนการตั้งชื่อเวอร์ชัน” อะไร [ปิด]
ข้อตกลงการตั้งชื่อเวอร์ชันต่างกันเหมาะสมกับโครงการที่แตกต่างกันหรือไม่ คุณใช้อะไรและทำไม โดยส่วนตัวแล้วฉันชอบหมายเลขบิลด์เป็นเลขฐานสิบหก (เช่น 11BCF) ซึ่งควรเพิ่มขึ้นเป็นประจำ จากนั้นสำหรับลูกค้าจะมีหมายเลขเวอร์ชัน 3 หลักอย่างง่ายคือ 1.1.3 1.2.3 (11BCF) <- Build number, should correspond with a revision in source control ^ ^ ^ | | | | | +--- Minor bugs, spelling mistakes, etc. | +----- Minor features, major bug fixes, etc. +------- Major version, UX changes, …

11
antipattern ตรงข้ามกับชื่อของอะไรคือ [ปิด]
Antipattern " Reinvent the wheel " เป็นสิ่งที่พบได้ทั่วไป - แทนที่จะใช้วิธีแก้ปัญหาพร้อมเขียนตัวคุณเองตั้งแต่เริ่มต้น รหัสฐานเติบโตขึ้นโดยไม่จำเป็นอินเทอร์เฟซที่แตกต่างกันเล็กน้อยที่ทำสิ่งเดียวกัน แต่แตกต่างกันเล็กน้อยมากเวลาเสียเวลาในการเขียน (และดีบัก!) ฟังก์ชั่นที่พร้อมใช้งาน เราทุกคนรู้เรื่องนี้ แต่มีบางอย่างที่ปลายด้านตรงข้ามของสเปกตรัม เมื่อแทนที่จะเขียนฟังก์ชั่นของคุณเองซึ่งเป็นโค้ดสองบรรทัดคุณจะต้องนำเข้าเฟรมเวิร์ก / API / ไลบรารี่สร้างอินสแตนซ์กำหนดค่าแปลงบริบทให้เป็นประเภทข้อมูลตามที่เฟรมเวิร์กยอมรับแล้วเรียกว่าหนึ่งฟังก์ชันเดียว ตรรกะทางธุรกิจสองบรรทัดภายใต้กิกะไบต์ของเลเยอร์นามธรรม จากนั้นคุณต้องทำให้ไลบรารีทันสมัยจัดการการพึ่งพาสร้างเก็บลิขสิทธิ์ในซิงค์และรหัสของการเริ่มต้นของมันนานกว่าสิบเท่าและซับซ้อนกว่าถ้าคุณเพิ่ง "reinvented wheel" เหตุผลอาจแตกต่างกันไป: การจัดการต่อต้าน "การคิดค้นใหม่ของวงล้อ" อย่างเคร่งครัดไม่ว่าจะมีค่าใช้จ่ายใครก็ตามที่ผลักดันเทคโนโลยีที่พวกเขาโปรดปรานแม้จะมีความเหลื่อมล้ำกับความต้องการ ใช้งานเฟรมเวิร์กซึ่งไม่เคยมาถึงหรือเพียงแค่เข้าใจผิดว่า "น้ำหนัก" คำแนะนำการนำเข้า / รวม / โหลดสองอย่างที่มี "เบื้องหลัง" มีชื่อสามัญสำหรับ antipattern ประเภทนี้หรือไม่? (ฉันไม่ได้พยายามที่จะเริ่มการสนทนาเมื่อมันถูกหรือผิดหรือถ้ามันเป็นปฏิปักษ์จริงหรือความคิดเห็นอะไรก็ตามนี่เป็นคำถามง่าย ๆ ที่ตรงไปตรงมาและมีวัตถุประสงค์) แก้ไข: ข้อเสนอแนะ "ซ้ำ" พูดถึงการเอารหัสของตนเองมาใช้เพื่อให้ "พร้อมสำหรับทุกอย่าง" นอกเหนือจากระบบภายนอก สิ่งนี้อาจเกิดขึ้นในบางกรณี แต่โดยทั่วไปแล้วมันเกิดจาก …

16
ประโยชน์ของการไม่ใช้สัญกรณ์ฮังการีคืออะไร
หนึ่งในสิ่งที่ฉันต่อสู้คือไม่ได้ใช้สัญกรณ์ฮังการี ฉันไม่ต้องการที่จะไปที่คำนิยามตัวแปรเพียงเพื่อดูว่ามันคืออะไร เมื่อโปรเจ็กต์ขยายขอบเขตมันก็ดีที่สามารถดูตัวแปรนำหน้าด้วย 'บูล' และรู้ว่ามันกำลังมองหาจริง / เท็จแทนที่จะเป็นค่า0/1 ฉันทำงานหนักมากใน SQL Server ฉันเติมคำนำหน้ากระบวนงานที่เก็บไว้ด้วย 'sp' และตารางของฉันด้วย 'tbl' ไม่ต้องพูดถึงตัวแปรทั้งหมดของฉันในฐานข้อมูลตามลำดับ ฉันเห็นทุกที่ที่ไม่มีใครต้องการใช้สัญกรณ์ฮังการีถึงจุดที่พวกเขาหลีกเลี่ยง คำถามของฉันคืออะไรประโยชน์ของการไม่ใช้สัญกรณ์ฮังการีและทำไมนักพัฒนาส่วนใหญ่จึงหลีกเลี่ยงปัญหาเช่นภัยพิบัติ

7
ทำไมการผกผันของการควบคุมจึงตั้งชื่อแบบนั้น?
คำinvertหรือcontrolไม่ได้ใช้เลยเพื่อกำหนด Inversion of Control ในคำจำกัดความที่ฉันเคยเห็น คำนิยาม วิกิพีเดีย การผกผันของการควบคุม (IoC) เป็นเทคนิคการเขียนโปรแกรมแสดงไว้ที่นี่ในแง่ของการเขียนโปรแกรมเชิงวัตถุซึ่งการเชื่อมต่อวัตถุถูกผูกไว้ในเวลาทำงานโดยวัตถุประกอบและโดยทั่วไปจะไม่รู้จักในเวลารวบรวมโดยใช้การวิเคราะห์แบบคงที่ ~ http://en.wikipedia.org/wiki/Inversion_of_control Martin Fowler การผกผันของการควบคุมเป็นรูปแบบทั่วไปในชุมชน Java ที่ช่วยให้สายไฟภาชนะบรรจุที่มีน้ำหนักเบาหรือประกอบชิ้นส่วนจากโครงการที่แตกต่างกันในการประยุกต์ใช้เหนียว ~ อิงจาก http://www.martinfowler.com/articles/inject.html (reworded) แล้วทำไม Inversion of Control ถึงชื่อว่า Inversion of Control? การควบคุมแบบใดที่กลับด้านและเกิดอะไรขึ้น มีวิธีกำหนด Inversion of Control โดยใช้คำศัพท์: กลับหัวและควบคุม ?

6
คำสำหรับฟังก์ชั่นที่เรียกซ้ำหลายครั้งจะมีผลเช่นเดียวกับการโทรครั้งเดียว?
(สมมติว่ามีสภาพแวดล้อมแบบเธรดเดียว) ฟังก์ชั่นที่ตอบสนองเกณฑ์นี้คือ: bool MyClass::is_initialized = false; void MyClass::lazy_initialize() { if (!is_initialized) { initialize(); //Should not be called multiple times is_initialized = true; } } ในสาระสำคัญฉันสามารถเรียกใช้ฟังก์ชั่นนี้ได้หลายครั้งและไม่ต้องกังวลกับการเริ่มทำงานMyClassหลายครั้ง ฟังก์ชันที่ไม่เป็นไปตามเกณฑ์นี้อาจเป็น: Foo* MyClass::ptr = NULL; void initialize() { ptr = new Foo(); } การโทรinitialize()หลายครั้งจะทำให้หน่วยความจำรั่ว แรงจูงใจ มันจะดีถ้ามีคำสั้น ๆ เพื่ออธิบายพฤติกรรมนี้เพื่อให้ฟังก์ชั่นที่คาดว่าจะได้พบกับเกณฑ์นี้สามารถแสดงความคิดเห็นได้อย่างถูกต้อง (โดยเฉพาะอย่างยิ่งมีประโยชน์เมื่ออธิบายฟังก์ชั่นอินเตอร์เฟสที่คาดว่าจะถูกแทนที่)
96 naming  functions 

15
การใช้อักขระ Unicode ในชื่อตัวแปรนั้นดีหรือไม่? [ปิด]
ฉันเพิ่งพยายามใช้อัลกอริทึมการจัดอันดับ AllegSkill เพื่อ Python 3 นี่คือลักษณะทางคณิตศาสตร์: ไม่มีจริงๆ. นี่คือสิ่งที่ฉันเขียน: t = (µw-µl)/c # those are used in e = ε/c # multiple places. σw_new = (σw**2 * (1 - (σw**2)/(c**2)*Wwin(t, e)) + γ**2)**.5 จริง ๆ แล้วฉันคิดว่ามันน่าเสียดายที่ Python 3 จะไม่ยอมรับ√หรือ²เป็นชื่อตัวแปร >>> √ = lambda x: x**.5 File "<stdin>", line 1 √ = …
82 naming  unicode 

4
อะไรคือความแตกต่างระหว่างคำนำหน้าชื่อ“ กับ” และ“ เป็น” ความแตกต่าง? [ปิด]
ความแตกต่างระหว่าง"กับ"และ"เป็น"คำนำหน้าชื่อเมธอดเช่นคืออะไร ToList () asList () ฯลฯ ... เมื่อใดที่จะใช้ซึ่งเมื่อออกแบบวิธีการ?
78 java  naming 

7
ชื่ออินเตอร์เฟสควรเริ่มต้นด้วยคำนำหน้า“ I” หรือไม่
ฉันได้อ่าน " Clean Code " โดย Robert Martin หวังว่าจะเป็นโปรแกรมเมอร์ที่ดีขึ้น แม้ว่าจะไม่มีสิ่งใดที่ทำให้ฉันรู้สึกแตกต่างไปจากเดิมอย่างสิ้นเชิงเกี่ยวกับวิธีการออกแบบแอปพลิเคชันและเขียนโค้ด มีส่วนหนึ่งของหนังสือที่ฉันไม่เพียง แต่ไม่เห็นด้วย แต่ไม่สมเหตุสมผลสำหรับฉันโดยเฉพาะเกี่ยวกับอนุสัญญาการตั้งชื่ออินเทอร์เฟซ นี่คือข้อความที่นำมาโดยตรงจากหนังสือ ฉันกล้าทำให้มุมมองนี้สับสนและต้องการคำชี้แจง ฉันชอบที่จะออกจากส่วนต่อประสานที่ไม่มีการตกแต่ง ก่อนหน้าฉันที่พบเห็นได้ทั่วไปในยุคปัจจุบันเป็นสิ่งที่ทำให้ไขว้เขวที่ข้อมูลที่ดีที่สุดและมากที่สุดที่เลวร้ายที่สุด ฉันไม่ต้องการให้ผู้ใช้ของฉันรู้ว่าฉันส่งให้อินเตอร์เฟซ อาจเป็นเพราะฉันเป็นแค่นักเรียนหรืออาจเป็นเพราะฉันไม่เคยทำโปรแกรมแบบมืออาชีพหรือเป็นทีม แต่ฉันต้องการให้ผู้ใช้รู้ว่ามันเป็นส่วนต่อประสาน มีความแตกต่างใหญ่ระหว่างการใช้อินเทอร์เฟซและการขยายชั้นเรียน ดังนั้นคำถามของฉันจึงลดลงไปถึง"ทำไมเราควรซ่อนความจริงที่ว่าบางส่วนของรหัสกำลังคาดว่าจะมีส่วนต่อประสาน" แก้ไข ในการตอบกลับคำตอบ: หากประเภทของคุณเป็นอินเทอร์เฟซหรือคลาสเป็นธุรกิจของคุณไม่ใช่ธุรกิจของใครบางคนที่ใช้รหัสของคุณ ดังนั้นคุณไม่ควรรั่วรายละเอียดรหัสของคุณในรหัสของบุคคลที่สามนี้ เหตุใดฉันจึงไม่ควร "รั่วไหล" รายละเอียดว่าประเภทที่กำหนดเป็นส่วนต่อประสานหรือคลาสของรหัสของบุคคลที่สามหรือไม่ สิ่งสำคัญสำหรับนักพัฒนาบุคคลที่สามที่ใช้รหัสของฉันเพื่อรู้ว่าพวกเขาจะใช้อินเทอร์เฟซหรือขยายชั้นเรียนหรือไม่? ความแตกต่างนั้นไม่สำคัญเท่ากับที่ฉันกำลังทำให้พวกเขาอยู่ในใจ

22
ข้อกำหนดการตั้งชื่อ: camelCase กับ underscore_case หรือไม่ คุณคิดอย่างไรเกี่ยวกับเรื่องนี้? [ปิด]
ฉันใช้ underscore_case ประมาณ 2 ปีและฉันเพิ่งเปลี่ยนมาใช้ camelCase เนื่องจากงานใหม่ (ใช้งานในภายหลังประมาณ 2 เดือนและฉันยังคิดว่า underscore_case เหมาะกว่าสำหรับโครงการขนาดใหญ่ที่มีโปรแกรมเมอร์จำนวนมากเข้าร่วม ส่วนใหญ่เป็นเพราะรหัสอ่านง่ายกว่า) ตอนนี้ทุกคนในที่ทำงานใช้ camelCase เพราะ (ดังนั้นพวกเขาบอกว่า) โค้ดดูสง่างามกว่า คุณคิดอย่างไรเกี่ยวกับ camelCase หรือ underscore_case ป.ล. โปรดแก้ตัวภาษาอังกฤษไม่ดีของฉัน แก้ไข อัปเดตก่อน: แพลตฟอร์มที่ใช้คือ PHP (แต่ฉันไม่ได้คาดหวังคำตอบที่เกี่ยวข้องกับแพลตฟอร์ม PHP อย่างเข้มงวดใคร ๆ ก็สามารถแบ่งปันความคิดของพวกเขาได้ว่าอะไรจะดีที่สุดในการใช้นั่นคือสาเหตุที่ฉันมาที่นี่ตั้งแต่แรก) ฉันใช้ camelCase เช่นเดียวกับ everibody ในทีม (เหมือนกับที่พวกคุณส่วนใหญ่แนะนำ) เราใช้ Zend Framework ซึ่งแนะนำ camelCase ด้วย ตัวอย่างบางส่วน (เกี่ยวข้องกับ PHP): กรอบงาน Codeigniter …
70 naming 

8
ปัญหาการตั้งชื่อ: ควรเปลี่ยนชื่อ“ ISomething” เป็น“ Something” หรือไม่ [ปิด]
บทของลุงบ็อบเกี่ยวกับชื่อในClean Codeแนะนำให้คุณหลีกเลี่ยงการเข้ารหัสในชื่อส่วนใหญ่เกี่ยวกับสัญกรณ์ฮังการี เขายังกล่าวถึงการลบIคำนำหน้าจากอินเทอร์เฟซโดยเฉพาะ แต่ไม่แสดงตัวอย่างของสิ่งนี้ สมมติว่า: การใช้อินเตอร์เฟสเป็นส่วนใหญ่เพื่อให้สามารถทดสอบได้ผ่านการฉีดแบบพึ่งพา ในหลายกรณีสิ่งนี้นำไปสู่การมีอินเทอร์เฟซเดียวกับตัวดำเนินการเดียว ยกตัวอย่างเช่นสองคนนี้ควรตั้งชื่ออะไร ParserและConcreteParser? ParserและParserImplementation? public interface IParser { string Parse(string content); string Parse(FileInfo path); } public class Parser : IParser { // Implementations } หรือฉันควรเพิกเฉยต่อข้อเสนอแนะนี้ในกรณีการดำเนินการแบบครั้งเดียวเช่นนี้หรือไม่?

7
วิธีการตั้งชื่อบางอย่างเมื่อตัวเลือกตรรกะเป็นคำหลักที่สงวนไว้? [ปิด]
บางครั้งชื่อลอจิคัลส่วนใหญ่สำหรับบางสิ่ง (เช่นตัวแปร) เป็นคำหลักที่สงวนไว้ในภาษาหรือสภาพแวดล้อมที่เลือก เมื่อไม่มีคำพ้องความหมายที่เหมาะสมเท่ากันชื่อหนึ่งจะตั้งชื่อได้อย่างไร ฉันคิดว่ามีวิธีแก้ปัญหาการปฏิบัติที่ดีที่สุดสำหรับปัญหานี้ สิ่งเหล่านี้สามารถจัดทำโดยผู้สร้างหรือผู้ว่าราชการของภาษาโปรแกรมและสภาพแวดล้อม ตัวอย่างเช่นถ้า python.org (หรือ Guido van Rossum) บอกว่าจะจัดการกับมันอย่างไรใน Python นั่นจะเป็นแนวทางที่ดีในหนังสือของฉัน ลิงก์ MSDN เกี่ยวกับวิธีจัดการกับมันใน C # จะดีเช่นกัน แนวทางที่จัดทำโดยผู้มีอิทธิพลที่สำคัญในวิศวกรรมซอฟต์แวร์ก็ควรมีคุณค่าเช่นกัน บางที Google / Alphabet มีคู่มือสไตล์ที่ดีที่สอนเราถึงวิธีจัดการกับมัน? นี่เป็นเพียงตัวอย่าง: ในภาษา C # "default" เป็นคำหลักที่สงวนไว้ เมื่อฉันใช้ enum ฉันอาจต้องการตั้งชื่อค่าเริ่มต้น "default" (คล้ายกับ "switch" statement) แต่ไม่สามารถทำได้ (C # คำนึงถึงขนาดตัวพิมพ์และค่าคงที่ enum ควรเป็นตัวพิมพ์ใหญ่ดังนั้น "Default" จึงเป็นตัวเลือกที่ชัดเจนที่นี่ แต่สมมติว่าไกด์นำเที่ยวสไตล์ปัจจุบันของเรากำหนดค่าคง enum …
64 naming 

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