กฎมาตรฐานการเข้ารหัสที่แปลกที่สุดที่คุณถูกบังคับให้ทำตามคืออะไร [ปิด]


173

เมื่อฉันถามคำถามนี้ฉันเกือบจะแน่นอนเสมอใช่คุณควรมีมาตรฐานการเข้ารหัส

กฎมาตรฐานการเข้ารหัสที่แปลกที่สุดที่คุณถูกบังคับให้ทำตามคืออะไร

และโดยที่แปลกประหลาดฉันหมายถึงที่สนุกที่สุดหรือแย่ที่สุดหรือแค่แปลก ๆ ธรรมดา

ในแต่ละคำตอบโปรดระบุว่าภาษาขนาดของทีมของคุณคืออะไรและสิ่งใดที่ทำให้เกิดผลเสียต่อคุณและทีมของคุณ


19
หลังจากอ่านผ่านรายการนี้ทันใดนั้นฉันรู้สึกว่าฉันมีอาชีพที่โชคดีมากที่จะหลีกเลี่ยงอึมาตรฐานบังคับนี้!
matt b

ครั้งต่อไปที่ฉันสัมภาษณ์งานฉันจะเรียกดูคำถามนี้เพื่อทำหน้าที่เป็น"ธงแดง Run!" ตัวบ่งชี้ การเข้ารหัสรูปแบบการต่อต้านมาตรฐานแน่นอน
Stu Thompson

5
และฉันอายที่จะยอมรับว่าในช่วงต้นอาชีพของฉันฉันได้รับคำตอบหนึ่งในทีม ฉันขอโทษจริงๆ
JasonFruit

คำตอบ:


434

ฉันเกลียดเมื่อใช้งานผลตอบแทนหลายรายการถูกแบน


26
จุดประสงค์ของกฎนี้คืออะไร โดยส่วนตัวแล้วฉันจะไม่ตรวจสอบโค้ดสำหรับโค้ดที่สามารถอ่านได้ง่ายขึ้นโดยใส่รหัสอื่นกลับมา
Mark Baker

22
ในทางกลับกันการกำจัดตัวเลือกที่จุดเริ่มต้นเช่น "if (param == null) return null" สามารถล้างรหัสของคุณได้ค่อนข้างน้อยเพื่อห้ามไม่ให้สิ่งนี้แทนที่จะกระตุ้นให้เกิดความผิดทางอาญา
Bill K

39
วิธีแก้ปัญหา: ถ้า (! เริ่มต้น ()) {RetVal = ERR_BADINIT; ไปที่ ReturnPoint; } (รหัสอีกมาก) ReturnPoint: return RetVal; } แก้ไขปัญหา! ;)
Marc Bernier

9
จนกระทั่งเมื่อไม่นานมานี้มีการห้ามส่งคืนหลายรายการ ความจริงนี้เป็นของเหลือจาก C ซึ่งล้าสมัยโดย C ++ RAII และฟังก์ชันที่มีขนาดน้อยกว่า 15 บรรทัดถูกเปิดเผย ตั้งแต่นั้นมาเช่น Braveheart: "FREEDOM !!!!" ... :-p ...
paercebal

122
ตัวเลือกของคุณ: ส่งคืนหลายรายการหรือซ้อนกันมากกว่าถ้ามีคำสั่ง ฉันจะรับผลตอบแทนหลายครั้ง
แลนซ์ฟิชเชอร์

333

เยื้องกลับ ตัวอย่างเช่น:

    for(int i = 0; i < 10; i++)
        {
myFunc();
        }

และ:

    if(something)
        {
// do A
        }
    else
        {
// do B
    }

152
โอ้พระเจ้าของฉัน ... ฉันจะได้พบกับผู้ต่อต้านสังคมที่มาพร้อมกับคนนั้นหรือไม่? เขาสามารถสอนฉันสักเรื่องหนึ่งหรือสองเรื่องเกี่ยวกับคนเกลียดผู้หญิง
John Rudy

23
ที่ไม่อาจเป็นจริง
Dane

191
ทุกครั้งที่คุณย้อนกลับการเยื้องพระเจ้าจะฆ่านักพัฒนาบำรุงรักษา
Chris Vest

14
OMG คุณล้อเล่นใช่ไหม
Andrea Ambu

21
ช่วยประหยัดไบต์มีค่า ... ไม่มีค่าใช้มันมาก
Spikolynn

326

อาจไม่ใช่คนที่แปลกที่สุดที่คุณจะได้รับ แต่ฉันเกลียดจริง ๆ เมื่อฉันต้องนำหน้าชื่อตารางฐานข้อมูลด้วย 'tbl'


5
นี่ไม่ได้เป็นเพียงสัญกรณ์ฮังการีสำหรับ DB หรือไม่
ARKBAN

19
ไม่ว่าจะชอบตัวแปรนำหน้าด้วย var ใช่ไหม
Brian R. Bondy

26
ในหลอดเลือดดำที่คล้ายกันฉันเกลียดเมื่อคอลัมน์ ID ในฐานข้อมูลนำหน้าด้วยชื่อตารางเช่นในตารางผลิตภัณฑ์จะมีคอลัมน์ผลิตภัณฑ์ ซ้ำซ้อนที่บางครั้งทำให้การเขียนสคริปต์โดยไม่ต้องออมเพิ่มเติมของอาการปวดหัวกว่าจะต้องมี
แอนดรูอินแกรม

30
ฉันชอบคอลัมน์ ID ที่จะนำหน้าด้วยชื่อตาราง ทำให้การเขียนแบบสอบถามง่ายขึ้นอีกเล็กน้อย และสำหรับกุญแจต่างประเทศคุณสามารถมีกุญแจต่างประเทศเหมือนกับเขตข้อมูลกุญแจ
Craig

38
ในบันทึกที่คล้ายกันฉันเกลียดเมื่อชื่อตารางต้องเป็นเอกพจน์ สัญชาตญาณของฉันคือการตั้งชื่อตารางที่เก็บพูดลูกค้า "ลูกค้า" ไม่ใช่ "ลูกค้า" ฟังดูเล็กน้อยจนกว่าคุณจะตระหนักถึงปัญหาทั้งหมดที่คุณจะบันทึกหากคุณสามารถตั้งชื่อตาราง "ธุรกรรม" แทน "[ธุรกรรม]"
Atario

248

สัญกรณ์ฮังการีเกือบทุกประเภท

ปัญหาเกี่ยวกับสัญกรณ์ฮังการีคือมันมักจะเข้าใจผิดมาก แนวคิดดั้งเดิมคือนำหน้าตัวแปรเพื่อให้ความหมายชัดเจน ตัวอย่างเช่น:

int appCount = 0; // Number of apples.
int pearCount = 0; // Number of pears.

แต่คนส่วนใหญ่ใช้เพื่อกำหนดประเภท

int iAppleCount = 0; // Number of apples.
int iPearCount = 0;  // Number of pears.

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


71
ดู Joel บนโพสต์ซอฟต์แวร์เกี่ยวกับการใช้งานสัญกรณ์ฮังการีอย่างเหมาะสมสามารถช่วยลดข้อบกพร่องได้อย่างไร: joelonsoftware.com/articles/Wrong.html
flicken

9
แน่นอนโดยใช้ C ++ แทน C คุณสามารถเขียนโค้ดเพื่อให้คอมไพเลอร์ให้ข้อผิดพลาดเมื่อเปรียบเทียบแอปเปิ้ลกับลูกแพร์
Andreas Magnusson

5
ใช่โจเอลทำให้ถูกต้อง ฉันหวังว่าจะสามารถรวบรวมคอมไพเลอร์เพื่อบังคับใช้เวอร์ชั่นของโจเอล
Loren Pechtel

9
ไม่ควรเป็น "int cntApples = 0; int cntPeas = 0;" หรือไม่ กล่าวคือ คำนำหน้าเป็นตัวแปร "ชนิด"
Blorgbeard ออก

42
อย่างน้อยหนึ่งตัวแรกนั้นถูกต้อง ... ทุกอย่างที่มี "Apple" ในนั้นจะต้องนำหน้าด้วย "i" ;)
Johannes Charra

240

ไม่อนุญาตให้ใช้ผู้ประกอบการที่สามซึ่งฉันทำงานอยู่ในขณะนี้:

int value = (a < b) ? a : b;

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


235
โดยทุกคนเจ้านายของคุณหมายถึงตัวเอง
Brian R. Bondy

13
ฉันเคยตกหลุมค่ายนี้ ... แต่เติบโตออกมาจากมันและเรียนรู้ที่จะรักผู้ปฏิบัติตามเงื่อนไข (เมื่อมันเหมาะสม)
John Rudy

22
ถ้ามีอะไรที่กฎควรจะเป็น "มักจะใช้ผู้ประกอบการที่ประกอบไปด้วย" ผู้ประกอบการของความงามที่บริสุทธิ์ :)
บ๊อบบี้แจ็ค

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

7
คุณจะเริ่มต้นตัวแปรคงที่แบบมีเงื่อนไขได้อย่างไรโดยไม่ต้องเขียนฟังก์ชั่นใหม่ทั้งหมด (ซึ่งจะไม่ดีมากสำหรับการอ่าน) การใช้ const สำหรับ "ตัวแปร" ในท้องถิ่นทำได้ดีกว่ามากสำหรับการทำความเข้าใจและการติดตามรหัสมากกว่าการห้ามของผู้ประกอบการที่ประกอบไปด้วย
Andreas Magnusson

239

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


3
ฉันเกลียดที่ ... มีคนไม่กี่คนที่ทำสิ่งนี้ที่นี่ (ไม่ใช่มาตรฐานหรืออะไรก็ตาม)
chills42

7
กฎอย่างนั้นคือเหตุผลที่ฉันรู้สึกว่าต้องมีการพิมพ์ซอร์สโค้ดที่ฉันสืบทอดจากสีอื่น ๆ ในอีกสักครู่หน้ามันไม่ได้ดีสำหรับ บริษัท ของฉัน - แต่มันเป็นวิธีเดียวที่ฉันสามารถอ่านได้ถ้าฉันต้องพิมพ์มัน (เราได้รับมรดกมากมายซึ่งปฏิบัติตามกฎนี้ ... )
John Rudy

3
เสียงเหมือนกฎที่พัฒนาขึ้นก่อนการควบคุมแหล่งที่มา หรือเนื่องจากโปรแกรมเมอร์เท่านั้นที่ตรวจสอบในสัปดาห์ละครั้ง
Craig

6
ฉันรักการอ่านคำตอบเหล่านี้เพราะมันทำให้งานของฉันดูดีขึ้น 100x
rjh

2
รู้สึกว่าคุณ ... เราอยู่ใน SVN มานานกว่า 4 ปี แต่นักพัฒนาอาวุโสเกลียดมันและตรวจสอบประมาณหนึ่งครั้งต่อสองเดือนใช้เวลาสามวันถัดไปเพื่อคอมไพล์โค้ดที่ใช้งานไม่ได้: /
Viktor Svub

204

ผมเคยทำงานภายใต้การปกครองแบบเผด็จการของMighty VB กษัตริย์

VB พระมหากษัตริย์เป็นหลักอันบริสุทธิ์ของ MS Excel และ VBA เช่นเดียวกับฐานข้อมูล ( ดังนั้นนามสกุลของเขา: เขาเล่นกับ Excel ในขณะที่นักพัฒนาทำงานร่วมกับคอมไพเลอร์และความท้าทายเขาในฐานข้อมูลจะมีผลอันตรายต่ออาชีพของคุณ ... )

แน่นอนทักษะอันยิ่งใหญ่ของเขาทำให้เขามีวิสัยทัศน์ที่ไม่ซ้ำกันของปัญหาการพัฒนาและการแก้ปัญหาการจัดการโครงการ: แม้ว่าVB Kingจะมีแนวคิดใหม่เกี่ยวกับ "มาตรฐานการเข้ารหัส" และ "แนวปฏิบัติที่ดีที่สุด" อย่างสม่ำเสมอ บ่อยครั้งที่ประสบความสำเร็จ) เพื่อกำหนดให้เรา ตัวอย่างเช่น:

  • อาร์เรย์ C / C ++ ทั้งหมดจะเริ่มต้นที่ดัชนี 1 แทนที่จะเป็น 0 แน่นอนว่าการใช้ 0 เป็นดัชนีแรกของอาร์เรย์นั้นล้าสมัยและถูกแทนที่โดยการจัดการดัชนีอาร์เรย์ที่ชาญฉลาดของ Visual Basic 6

  • ฟังก์ชั่นทั้งหมดจะส่งคืนรหัสข้อผิดพลาด: ไม่มีข้อยกเว้นใน VB6 ดังนั้นทำไมเราจึงต้องการมันทั้งหมด ( เช่นใน C ++ )

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

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

  • เนื่องจากเราทำงานกับ C ++ / COM เริ่มตั้งแต่วันนี้เราจะโค้ดฟังก์ชัน DOM อรรถประโยชน์ทั้งหมดของเราใน Visual Basic

  • ข้อผิดพลาด ASP 115 นั้นชั่วร้าย ด้วยเหตุผลนี้เราจะใช้ On Error Resume Next ใน VBScript / ASP code ของเราเพื่อหลีกเลี่ยง

  • XSL-T เป็นภาษาเชิงวัตถุ ใช้การสืบทอดเพื่อแก้ไขปัญหาของคุณ ( ทำให้ประหลาดใจที่ขากรรไกรของฉันเปิดเกือบหมดในวันนี้ )

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

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

  • เริ่มวันนี้ฐานรหัสของเราจะแบ่งออกเป็นสี่สาขา เราจะจัดการการซิงโครไนซ์และรวมการแก้ไขข้อบกพร่อง / วิวัฒนาการทั้งหมดด้วยมือ

ทั้งหมด แต่C / C ++ อาร์เรย์ , VB DOM ฟังก์ชั่นยูทิลิตี้และXSL-T เป็นภาษา OOPถูกนำมาใช้ท่ามกลางการประท้วงของเรา แน่นอนเมื่อเวลาผ่านไปบางคนถูกค้นพบอะแฮ่มหักและถูกทอดทิ้งโดยสิ้นเชิง

แน่นอนว่าความน่าเชื่อถือของVB King นั้นไม่เคยประสบมาก่อน: ในบรรดาผู้บริหารระดับสูงเขายังคงเป็นผู้เชี่ยวชาญทางเทคนิค "top gun" ...

สิ่งนี้ทำให้เกิดผลข้างเคียงที่น่าขบขันอย่างที่คุณเห็นโดยไปตามลิงก์อะไรคือความคิดเห็นที่ดีที่สุดในซอร์สโค้ดที่คุณเคยพบมา?


28
Re: การจัดทำดัชนี 1 ครั้ง บางครั้งคุณต้องยืนขึ้นและพูดบางสิ่งที่แข็งแกร่งเช่น "นั่นโง่และผิด" ลากเส้นในทราย ลืมอัตตาอัตตาจรและพูดมันออกไป ฉันเกือบจะรับประกันได้ว่าโปรแกรมเมอร์ที่มีค่าอื่น ๆ ทุกคนจะเริ่มผงกหัวและเข้าร่วมทันที
Kirk Strauser

31
@jrista: หากคุณไม่ได้แสดงความคิดเห็นการสะกดของข้อความของฉันโปรดอย่าสนใจสิ่งต่อไปนี้ ... ... ... ... ... ... ... ... ... ... ... หากคุณกำลังแสดงความคิดเห็นข้อความของฉันโปรด พิจารณา (1) เสนอการแก้ไข (2) แก้ไขการสะกดคำด้วยตัวคุณเองหรือ (3) พิจารณาว่าไม่ใช่นักพัฒนาทุกคนในโลก (ไกลจากมัน) เป็นเจ้าของภาษาอังกฤษดังนั้นฉันเดาว่าการทนต่อการสะกดผิดนั้นน้อยที่สุด หรือพิสูจน์ว่าคุณสามารถทำได้ดีกว่าโดยส่งการแปลที่ถูกต้องให้ฉันในภาษาฝรั่งเศส ... ^ _ ^ ...
paercebal

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

34
@muusbolla: ใครบอกคุณว่าเราไม่ได้บ่น? มันเพิ่มขึ้นเรื่อย ๆ จนกระทั่งตัวแทนทั้งสอง (รวมถึงฉัน) ไปที่ CEO เพื่ออธิบายปัญหา แต่ฉันขอโทษที่ต้องบอกคุณว่ามีความแตกต่างระหว่างโลกอุดมคติที่ซึ่งความยุติธรรมปกครองและโลกแห่งความจริงที่ผู้บังคับบัญชาบางคนเชื่อว่า "การจัดการไม่เคยผิดแม้ในขณะที่มันเป็น" และจะบดขยี้ใครก็ตามที่ จะกล้าที่จะโต้แย้งความเชื่อที่ว่า ของที่ระลึกที่มีความสุขเพียงอย่างเดียวที่ฉันมีในเวลานั้นคือวันที่ฉันลาออกเมื่อเกือบสามปีที่แล้วและฉันเป็นคนที่มีความสุขมากขึ้นตั้งแต่วันนั้น อย่างไรก็ตามถ้าเป็นจริงเหตุผล downmod ของคุณเป็นง่อย ขอโทษ
paercebal

7
@ paercebal: En générale, ราชทัณฑ์ c'est écrit, sauf que quelques petits erreurs: « squatch »: ça doit être«สควอช»; «วันนี้หนึ่งวัน»: ในบริบทบริบท, ใน dirait «วันนั้น»; «ขั้นตอนการเก็บรักษา»: «ขั้นตอนการเก็บรักษา»; « chocked »s'écrit« choke » ออสเตรเลีย, ความคิดเห็นและความคิดเห็น, กล่าวถึง», ซึ่งเป็นที่กล่าวถึง«กล่าวถึง»ไม่มีความคิดเห็น, พูดคุยเกี่ยวกับเรื่องนี้เพียงแค่โทรหาเรา ในทางตรงกันข้าม, โดย y montrez une excellente maîtrise de l'anglais; อนุโมทนา!
intuited

131

ย้อนกลับไปในยุค 80/90 ฉันทำงานให้กับ บริษัท จำลองเครื่องบินที่ใช้ FORTRAN คอมไพเลอร์ FORTRAN ของเรามีความยาวสูงสุด 8 อักขระสำหรับชื่อตัวแปร มาตรฐานการเข้ารหัสของ บริษัท สงวนไว้สามข้อแรกสำหรับข้อมูลรูปแบบสัญลักษณ์ของฮังการี ดังนั้นเราต้องลองและสร้างชื่อตัวแปรที่มีความหมายด้วยตัวละครเพียง 5 ตัว!


17
หรูหรา: เรามีเพียง 6 ตัวอักษร; แพ็คเกจมีชื่อขึ้นต้นด้วย g; ฟังก์ชั่นภายในทั้งหมดเริ่มต้น gk; มีไดรเวอร์เวิร์คสเตชั่นที่มีรหัสเช่น 0p (ดังนั้น gk0p จึงเป็นจุดเริ่มต้น) ทำให้เรามีอักขระสองตัวสำหรับส่วนที่เหลือของชื่อ Fortran gk0paa, gk0pab, ...
Jonathan Leffler

103
"ตอนที่ฉันอายุเท่าคุณพวกเรามีตัวละครแค่ 2 ตัวเท่านั้นและมันก็ไม่ตรงตามตัวพิมพ์ใหญ่ - เล็ก"
pookleblinky

53
เราเคยต้องตื่นนอนตอน 2 โมงเช้า 3 ชั่วโมงก่อนเข้านอนจากนั้นก็เขียนคอมไพเลอร์ของเราเองและจ่ายให้ บริษัท เพื่อรับสิทธิพิเศษในการทำงาน เราได้รับอนุญาตเพียงแค่ตัวอักษร A สำหรับชื่อตัวแปรของเรา จากนั้นเจ้านายของเราจะลบรหัสของเราและเต้นรำในรายการของเราร้องเพลงฮาเลลูยา
David Arno

12
"50 ตัวบ่งชี้ที่เป็นไปได้ควรจะเพียงพอสำหรับทุกคน": p
Chris Vest

5
Heck ล่ามพื้นฐานที่เราทำงานด้วยเมื่อนานมาแล้วมีชื่อตัวแปรสองตัวอักษร ทำไมบ่นประมาณ 5?
David Thornley

107

ฉันทำงานในสถานที่ที่มีการควบรวมกิจการระหว่าง 2 บริษัท หนึ่ง 'เด่น' มีเซิร์ฟเวอร์หลักที่เขียนใน K&R C (เช่น pre-ANSI) พวกเขาบังคับทีม Java (จากทั้งสองสำนักงาน - อาจรวมทั้งหมด 20 devs) เพื่อใช้รูปแบบนี้ซึ่งไม่สนใจเสาหลัก 2 ประการของ "การอภิปรายรั้ง" และตรงไปที่บ้าคลั่ง:

if ( x == y ) 
    {
    System.out.println("this is painful");
    x = 0;
    y++;
    }

18
ฉันคิดว่าการรักษาความแตกต่างที่ชัดเจนระหว่าง C และ Java จะทำให้การเปลี่ยนผ่านง่ายขึ้น (+1 สำหรับ "และตรงไปที่บ้าคลั่ง")
Jeffrey L Whitledge

4
ดูเหมือนว่ารูปแบบ Whitesmiths ซึ่งใช้ใน 'การเขียนโปรแกรม Windows' ต้นฉบับโดย Petzold - ไปคิด! ;)
Bobby Jack

7
ฉันพบว่านี่เป็นรูปแบบรั้งที่ฉลาดที่สุด น่าเสียดายที่คนส่วนใหญ่ไม่ใช้มัน หากการจัดฟันมีความหมายทางตรรกมันควรจะปฏิบัติเหมือนไม่ติดที่ท้ายบรรทัดและไม่สนใจ
Ryan Lundy

7
@Kyralessa ฉันไม่เห็นด้วย ... ฉันไม่รู้ว่าเครื่องมือจัดฟันมีความหมายทางความหมายหรือไม่ แต่มันอาจส่งผลต่อการจับคู่รูปแบบและความรู้สึกของพื้นที่ IMO รุ่นนี้เสียอย่างสมบูรณ์ เช่นฉันต้องการคั่นหน้าหนังสือของฉันไว้ด้านนอกหนังสือไม่ควรล้างออกด้วยหน้ากระดาษ
Michael Easter

6
นี่เป็นสไตล์ที่ฉันชอบ แต่ทุกอย่างในโลก (โดยเฉพาะอย่างยิ่ง Visual Studio) เป็นค่าเริ่มต้นสำหรับโหมดอื่น ๆ ดังนั้นฉันจึงยอมแพ้ ทำไมฉันถึงชอบมัน เครื่องมือจัดฟันคือ "ส่วนหนึ่งของ" รหัสที่มีอยู่ - พวกเขาบังคับให้ "ดูเหมือน" คำสั่งเดียวกับ if ซึ่งเป็นสิ่งที่คาดหวัง
Atario

104

พระราชวังต้องห้าม:

while (true) {

อนุญาต:

for (;;) {

4
คนอื่น ๆ แย้งว่าfor (;;) {เป็นสำนวน C ครั้งแรก
Robert P

69
หากฉันเข้าใจรอยยิ้มที่ทันสมัยและแปลกใหม่อย่างถูกต้องมาตรฐานนี้ทำให้คนจนทำงานหนักเกินไปสำหรับการแถลงการณ์!
Ben Blank

15
นี่คือกฎโดยพฤตินัยที่นี่ VC6 ออกคำเตือนคอมไพเลอร์เกี่ยวกับ while (จริง) แต่ไม่เกี่ยวกับ (;;) มิฉะนั้นพวกเขาจะเทียบเท่า ดังนั้นเราเลือกอันที่ปราศจากคำเตือน
user9876

22
Bjarne S. พูดในหนังสือของเขาว่า "for (;;) ควรอ่านอย่างถาวร" ถ้ามันดีพอสำหรับผู้สร้าง C ++ มันก็ดีสำหรับคุณ :-)
Frank Krueger

58
ในโปรแกรม C โปรแกรมแรกที่ฉันทำงานอยู่มีคนเพิ่ม #define (;;) ดังนั้นคุณจึงสามารถพูดว่า "เป็นนิตย์ {... }"
James Curran

101

เพื่อนของฉัน - เราจะเรียกเขาว่า CodeMonkey - รับงานแรกของเขาออกจากวิทยาลัย [ หลายปีที่ผ่านมา] ทำการพัฒนาภายในใน COBOL โปรแกรมแรกของเขาถูกปฏิเสธว่า 'ไม่เป็นไปตามมาตรฐานของเรา' เพราะมันใช้ ... คำสั่ง IF ที่ซ้อนกันของ [shudder!]

มาตรฐานการเข้ารหัสห้ามการใช้คำสั่ง IF แบบซ้อน

ตอนนี้ CodeMonkey ไม่อายและมั่นใจในความสามารถของเขาดังนั้นเขาจึงยืนยันที่จะขอร้องทุกคนในสายโซ่และลงทางเดินทำไมกฎนี้ถึงมีอยู่ ส่วนใหญ่อ้างว่าพวกเขาไม่รู้บางคนทำเรื่อง 'readability' และในที่สุดคนคนหนึ่งก็จำเหตุผลดั้งเดิมได้: คอมไพเลอร์ COBOL รุ่นแรกที่พวกเขาใช้มีข้อผิดพลาดและไม่ได้จัดการคำสั่ง IF ที่ซ้อนกันอย่างถูกต้อง

ข้อผิดพลาดคอมไพเลอร์นี้แน่นอนได้รับการแก้ไขอย่างน้อยทศวรรษที่ผ่านมา แต่ไม่มีใครท้าทายมาตรฐาน [baaa!]

CodeMonkey ประสบความสำเร็จในการเปลี่ยนแปลงมาตรฐาน - ในที่สุด!


7
Steven สิ่งนี้ทำให้ฉันนึกถึงเรื่องราวการทดลองลิง: o) freekvermeulen.blogspot.com/2008/08/ …
นิคแดนดูลากิส

5
@ [Nick D]: ใช่ฉันเหมือนกัน - ด้วยเหตุนี้รหัสชื่อ "CodeMonkey" ;-)
Steven A. Lowe


เหตุผลอาจผิด แต่ก็ยังดีที่จะหลีกเลี่ยง ifs ที่ซ้อนกัน - c2.com/cgi/wiki?ArrowAntiPattern
manojlds

97

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


23
อาจ _ เสียบนแป้นพิมพ์ของเขา;)
Roman Plášil

139
buttonNameUnderscoreClick ()
vitule

9
มีผลข้างเคียงที่โชคร้ายในการป้องกันการใช้ไฟล์และLINEในการดีบั๊ก และ #if __cplusplus extern "C" ในไฟล์ส่วนหัว และอินทิกรัลชนิดใน stdint.h และ size_t
Steve Jessop

8
สิ่งที่ดีคือ C # แล้ว
กำหนดค่า

4
ฉันอย่างจริงจังกีดกันขีดล่าง (แม้จะไม่ได้ในกรณี OP ดังกล่าวข้างต้นมันเป็นอีกสองการกดแป้นพิมพ์ (Shift + _) ที่ฉันชอบที่จะไม่ได้วางอยู่บนฉันเมื่อ Pascal หรืออูฐกรณีที่จะทำอะไรได้ดี..
TGnat

92

ข้อตกลงการตั้งชื่อฐานข้อมูลที่ไร้ประโยชน์ทั้งหมด ชื่อตารางทุกชื่อต้องเริ่มต้นด้วยตัวเลข ตัวเลขแสดงชนิดของข้อมูลที่อยู่ในตาราง

  • 0: ข้อมูลที่ใช้ทุกที่
  • 1: ข้อมูลที่ใช้โดยโมดูลบางตัวเท่านั้น
  • 2: ตารางการค้นหา
  • 3: ปฏิทิน, แชทและอีเมล
  • 4: การเข้าสู่ระบบ

มันทำให้ยากที่จะหาโต๊ะถ้าคุณรู้แค่ตัวอักษรตัวแรกของชื่อ นอกจากนี้ - เนื่องจากเป็นฐานข้อมูล mssql - เราต้องล้อมรอบ tablenames ด้วยวงเล็บเหลี่ยมทุกที่

-- doesn't work
select * from 0examples;

-- does work
select * from [0examples];

65
ฉันขอโทษขอโทษอย่างมาก ...
Kirk Strauser

1
ว้าว - หนึ่งที่ดี ฉันเดาว่าใช้ตัวอักษรไม่เป็นปัญหา? ไม่ใช่ว่าเป็นความคิดที่ดี แต่อย่างน้อยคุณไม่จำเป็นต้องพูดชื่อตารางทั้งหมด
Mark Brittingham

ใครจะรู้ว่าใครเป็นคนทำ DBA
dotjoe

90

เรากำลังทำโครงการ C ++ และหัวหน้าทีมเป็นคนปาสกาล

ดังนั้นเราจึงมีมาตรฐานการเข้ารหัสรวมไฟล์เพื่อกำหนดสิ่งที่น่ารำคาญ C และ C ++ ใหม่:

#define BEGIN {
#define END }

แต่รอยังมีอีก!

#define ENDIF }
#define CASE switch

ฯลฯ มันยากที่จะจำหลังจากทั้งหมดนี้

สิ่งนี้จะเป็นสิ่งที่รหัส C ++ สามารถอ่านได้อย่างสมบูรณ์แบบและทำให้ทุกคนอ่านไม่ออกยกเว้นหัวหน้าทีม

เราต้องใช้สัญกรณ์ฮังการีแบบย้อนกลับเช่น

MyClass *class_pt  // pt = pointer to type

UINT32 maxHops_u   // u = uint32

แม้ว่าจะแปลกฉันก็เริ่มเป็นแบบนี้


22
การสร้างรหัสที่ไม่สามารถรักษาได้สำหรับอนาคต
rshimoda

2
สัญกรณ์ฮังการีทำถูกต้องก็โอเค ทำผิด ... ick ระบบประเภทที่เหมาะสมเต้นทั้งสอง
Thelema

5
คุณรู้ไหมฉันว่าฉันอยู่กับคุณ หูดฮังการีไม่น่ารังเกียจนักเมื่อถูกโจมตีจนจบอย่างนั้น
TED

ฮ่าฮ่าพาฉันกลับไปเป็นวันที่ฉันเปลี่ยนจาก Pascal เป็น C ++ (ประมาณ 16 ปีที่แล้ว) ทุกครั้งที่ฉันเห็น {ฉันต้องบอกตัวเองด้วยใจว่า "{หมายถึง BEGIN" อย่างน้อยสำหรับฉันมันเป็นเพียงในหัวของฉัน
thomasrutter

6
เมื่อฉันทำงานในการสนับสนุน MS VC ++ เรามีลูกค้าหลายรายส่งรหัสการเขียนซ้ำเช่นนี้ มันใช้เวลาสักครู่ที่เราจะรู้ว่ามันเป็นจริงใน C ++ (พวกเขาไม่ได้รวม #defines)
JBRWilkinson

88

ที่งานเดิม:

  • ตาราง "ปกติ" เริ่มต้นด้วย T_
  • ตาราง "ระบบ" (ปกติแล้วการค้นหา) จะเริ่มต้นด้วย TS_ (ยกเว้นเมื่อไม่มีเพราะบางคนไม่รู้สึกเหมือนวันนั้น)
  • ตารางตัวอ้างอิงโยงเริ่มต้นด้วย TSX_
  • ชื่อฟิลด์ทั้งหมดเริ่มต้นด้วย F_

ใช่มันเป็นสิ่งที่ถูก. เขตข้อมูลทั้งหมดในทุกตาราง เพื่อที่เราจะได้รู้ว่ามันเป็นทุ่งนา


และคุณไม่มีคำนำหน้าพิเศษสำหรับฟิลด์คีย์หลัก ???
Czimi

2
@Czimi: ฉันลืมที่จะพูดถึงว่า ทุกตารางมีฟิลด์ชื่อ FI_ID ที่ใช้เป็นคีย์หลัก
Jeromy Irvine

31
อันศักดิ์สิทธิ์ ... T_guy ผู้คิดค้นฝันร้ายนี้ควรถูกฆ่าด้วย F_gun และส่งไปยัง TSX_hell
Sergey Skoblikov

3
เรามี tbl และ fld สำหรับเขตข้อมูลและตารางทั้งหมด ไร้ประโยชน์โดยสิ้นเชิง ...
กำหนดค่า

5
@configurator: คุณมี“ tbl” สำหรับทุกฟิลด์และ“ fld” สำหรับทุกตาราง :-)))
Timwi

84

เพื่อนของฉันเจอกฎนี้ขณะทำงานที่หน่วยงานราชการ การใช้ ++ (ก่อนหรือหลัง) ถูกแบนอย่างสมบูรณ์ เหตุผล: คอมไพเลอร์ต่างกันอาจตีความต่างกัน


5
ณ จุดนั้นคุณอาจยอมแพ้เช่นกันใช่ไหม
Kirk Strauser

90
บางคนถูกกัดโดยไม่เข้าใจความแตกต่างระหว่าง postfix และ prefix อ้างว่า bug ของคอมไพเลอร์จากนั้นก็สร้างความเสียหายให้กับคนอื่นฉันคิด
เบอร์นาร์ด

5
ที่จริงแล้วพวกเขาพูดถูกในบางสถานการณ์ การแบนนั้นดูเหมือนจะไม่สูงนัก ยกตัวอย่างเช่นบรรทัด: a [i] = i ++; ฉันอาจเพิ่มขึ้นก่อนที่จะใช้ในการจัดทำดัชนีหรือหลังจาก ภาษาไม่ได้กำหนดสิ่งนี้
TED

9
เขาถูกต้อง - ลำดับการดำเนินการไม่ได้รับประกันเมื่อคุณใช้ตัวแปรเดียวกันที่อื่นในคำสั่ง เพียงแค่ห้ามใช้รหัสที่คลุมเครือซึ่งไม่ใช่การใช้ทั้งหมดเลย!
Loren Pechtel

2
อาจห้าม=เช่นเดียวกับที่สามารถใช้เพื่อทำให้เกิดพฤติกรรมที่ไม่ได้กำหนด
กำหนดค่า

81

ครึ่งหนึ่งของทีมชื่นชอบการเว้นวรรคสี่ตอน อีกครึ่งหนึ่งที่ชื่นชอบการเว้นวรรคสองช่อง

ในขณะที่คุณสามารถเดาได้ว่ามาตรฐานการเข้ารหัสได้รับคำสั่งสามประการเพื่อที่จะ


42
นั่นเป็นเหตุผลว่าทำไมการระบุแท็บจึงยอดเยี่ยมมาก ทุกคนสามารถเปลี่ยนขนาดในการแก้ไขของเขา;)
xardias

41
ใช่การเยื้องของแท็บนั้นยอดเยี่ยม ... จนกว่าคุณจะเปิดไฟล์ของคนอื่นและค้นหาสิ่งที่ไม่ตรงแนวเนื่องจากช่องว่างมีการปนกันในที่ที่ไม่ควรมีหรือไม่เข้ากันไม่ได้ จากนั้นคุณทำการฟอร์แมตใหม่โดยอัตโนมัติและการควบคุมเวอร์ชันต่างกันไปอย่างน่าเกลียด ฮึ.
Alan Hensel

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

16
... และนั่นก็ไม่ได้ผล : P
Robert P

10
เมื่อต้องการ "รุกรานทั้งหมดเท่า ๆ กัน" ... ฉันรักมัน ฉันจะต้องจดจำสิ่งนี้ในครั้งต่อไปที่ฉันได้รับความนิยมในสงครามมาตรฐานเยื้อง
ไมเคิลเสี้ยน

74

ไม่สามารถใช้ Reflection ได้เนื่องจากผู้จัดการอ้างว่ามันเกี่ยวข้องกับ 'เวทมนตร์' มากเกินไป


10
ใช่เวทมนตร์ยากที่จะรักษาปรากฏ;) ฮ่า ๆ
Rik

19
นั่นอาจเป็นกฎที่ถูกต้องด้วยเหตุผลผิด :)
บ๊อบบี้แจ็ค

71
สำหรับประสิทธิภาพการอ่าน 'มายากล' ฆ่ารหัสฝันร้ายที่ไม่สามารถปิดบังได้ เขาพูดถูก.
gbjbaanb

4
ฉันเดาว่าคุณไม่ได้รับอนุญาตให้ใช้โค้ดใน. Net เลย ท้ายที่สุดกรอบการดำเนินการหลายอย่างผ่านการไตร่ตรอง
NotMe

5
ลงไปกับพ่อมดพวกนั้น!! อยู่เสมอด้วยเวทมนตร์ของพวกเขาขโมยงานของเราติดใจผู้หญิงของเราและทำลายลูกของเรา!
ZJR

71

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

สิ่งนี้อาจฟังดูแปลกเกินไปยกเว้นข้อบกพร่องเพียงเล็กน้อยเดียว ซอฟต์แวร์ทั้งหมดนี้ใช้สำหรับแพ็คเกจซอฟต์แวร์เซิร์ฟเวอร์ตามความต้องการใช้งานบน Linux และกล่องไคลเอนต์ทั้งหมดที่ลูกค้าของเราซื้อคือ Linux การพยายามหาวิธีทำให้ไวน์ (ในสมัยนั้นไม่น่าเชื่อถือมาก) และทำงานบนกล่องเหล่านี้ทั้งหมดและดูว่าเราสามารถทำให้ IE ทำงานและฝึกอบรมผู้ดูแลวิธีแก้ปัญหาไวน์ได้หรือไม่ เพื่อตอบสนองคำขอของเจ้าของ ปัญหาก็คือเขาทำการออกแบบเว็บไซต์และไม่รู้วิธีที่จะทำให้เว็บไซต์เป็นไปตามมาตรฐานของ FireFox

มันคงไม่ทำให้คุณตกใจเมื่อรู้ว่า บริษัท ของเราล้มละลาย


1
ฉันจะบอกว่ามันแปลกมาก
Brad Gilbert

14
ไชโยสามทุนนิยม!
starblue

46
Yay เพื่อความอยู่รอดของ fittest ... ผู้ชายคนนี้ไม่สมควรที่จะทำธุรกิจซอฟต์แวร์ของเขา
Mark Brittingham

10
ประโยคสุดท้ายนั้นเยี่ยมมาก จะมีคนจริงจังเมื่อพวกเขาตัดสินใจเช่นนี้ได้อย่างไร
Mr. Shickadance

54

การใช้ชื่อตัวระบุหมายเลขทั่วไป

ที่งานปัจจุบันของฉันเรามีกฎสองข้อที่มีความหมายจริง:

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

ดังนั้นเราจึงจบลงด้วยการมีcustomer.reserve_field_14ที่อยู่อีเมลของลูกค้า

มีอยู่วันหนึ่งหัวหน้าของเราคิดถึงการแนะนำตารางสำรองแต่โชคดีที่เราสามารถโน้มน้าวเขาไม่ให้ทำ

กฎข้อที่ 2:หนึ่งในผลิตภัณฑ์ของเราเขียนใน VB6 และ VB6 มีจำนวน จำกัด ของชื่อตัวระบุที่แตกต่างกันทั้งหมดและเนื่องจากรหัสมีขนาดใหญ่มากเราจึงใช้งานข้อ จำกัด นี้อย่างต่อเนื่อง ในฐานะที่เป็น "โซลูชัน" ชื่อตัวแปรท้องถิ่นทั้งหมดจะถูกกำหนดหมายเลข:

  • Lvarlong1
  • Lvarlong2
  • Lvarstr1
  • ...

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

...

If Lvarbool1 Then
  Lvarbool2 = True
End If

If Lvarbool2 Or Lvarstr1 <> Lvarstr5 Then
  db.Execute("DELETE FROM customer WHERE " _ 
      & "reserve_field_12 = '" & Lvarstr1 & "'")
End If

...

คุณสามารถจินตนาการได้ว่ามันยากแค่ไหนที่จะแก้ไขรหัสเก่าหรือของคนอื่น ...

อัพเดทล่าสุด:ตอนนี้เรากำลังใช้ "ขั้นตอนการจอง" สำหรับสมาชิกส่วนตัว:

Private Sub LSub1(Lvarlong1 As Long, Lvarstr1 As String)
  If Lvarlong1 >= 0 Then 
    Lvarbool1 = LFunc1(Lvarstr1)
  Else
    Lvarbool1 = LFunc6()
  End If
  If Lvarbool1 Then
    LSub4 Lvarstr1
  End If
End Sub

แก้ไข:ดูเหมือนว่ารูปแบบรหัสนี้กำลังเป็นที่นิยมมากขึ้นเรื่อย ๆ ดูโพสต์WTF รายวันนี้เพื่อเรียนรู้เพิ่มเติม: สายตาเอียง :)


10
ไม่ได้ล้อเล่น. ฉันพนันได้เลยว่าต้องใช้เวลานานในการผ่านและลบการฉีด SQL ทั้งหมดออก ;-)
Kirk Strauser

นั่นคือความชั่วร้ายที่บริสุทธิ์ ฉันแน่ใจว่าเจ้านาย / TL ของคุณเป็นเจ้าเหนือหัวที่รอโอกาสของเขา
Manuel Ferreria

5
โอ้พระเจ้าจะมากับกฎเช่นนี้ใคร ??? ที่สำคัญที่สุด: ทีมของคุณจัดการโค้ดได้อย่างไร
hasen

2
ฉันคิดว่าเขาหมายความว่าคุณจะเลือกเขตข้อมูลทั้งหมดตามค่าเริ่มต้นเพื่อให้คุณได้เขตข้อมูล 'สำรอง' ทั้งหมดโดยไม่จำเป็นต้องระบุเขตข้อมูลทั้งหมด
Mr. Shickadance

2
ขั้นตอนที่คุณสามารถใช้การเตรียมรหัสล่วงหน้าโดยที่คุณจะเขียนรหัสโดยใช้ชื่อตัวแปรที่มีความหมายเต็มแล้วแทนที่ด้วย "ตัวแก้ไขที่ถูกต้อง" ก่อนที่จะรวบรวมบางส่วนเช่น '% s / อีเมล / Reserve_field_12 / g';)
João Portela

53

ย้อนกลับไปในวัน C ++ ของฉันเราไม่ได้รับอนุญาตให้ใช้ ==,> =, <=, && ฯลฯ มีมาโครสำหรับสิ่งนี้ ...

if (bob EQ 7 AND alice LEQ 10)
{
   // blah
}

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

if (NULL EQ ptr); //ok
if (ptr EQ NULL); //not ok

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


1
rofl .. เขียน fortran ใน C.
Robert Paulson

ฉันยังคงเป็นโมฆะ == ตัวแปรใน c # ฉันรู้ว่าฉันไม่จำเป็นต้องกังวลเกี่ยวกับมัน แต่ฉันไม่สามารถช่วยตัวเองได้ ถ้าฉันเห็นมันเป็นอย่างอื่นฉันก็รู้สึกประหม่า นิสัยเก่าตายยาก
ทรอยฮาวเวิร์ด

คนสุดท้ายเกี่ยวกับโรคจิตจะทำให้บางคนถูกฆ่าตายเกือบจะในทันที
Mr. Shickadance

31
+1 สำหรับโรคจิตหิน
rcollyer

เมื่อโพสต์โค้ดบนฟอรัมบางครั้งฉันจะใช้สิ่งต่าง ๆ เช่น LT และ SHL เพื่อหลีกเลี่ยงการให้ตัวดำเนินการ munged เป็น HTML
supercat

45

สัญกรณ์ฮังการีโดยทั่วไป


11
ฉันชอบ H / N สำหรับการควบคุมบนหน้าเว็บ การค้นหาการควบคุมกล่องข้อความทั้งหมดในรายการแบบหล่นลง IntelliSense ง่ายขึ้นเมื่อสิ่งที่ฉันต้องค้นหาคือ txtFooBar
cciotti

20
สัญกรณ์ฮังการีไม่ได้ชั่วร้ายเพียงแค่จะต้องมีการใช้อย่างถูกต้องjoelonsoftware.com/articles/Wrong.html
Czimi

1
ฉันจะยอมรับด้วยความเคารพต่อการควบคุม จากนั้นสัญกรณ์ฮังการีจะมีประโยชน์ โดยทั่วไปแล้วฉันคิดว่าสัญกรณ์ฮังการีล้าสมัยและใช้งานในทางที่ผิด มันลอยไปจากความตั้งใจดั้งเดิม
vfilby

9
ใช้ผิดไปอย่างน่ากลัวใช่ ไม่ถูกต้อง
Loren Pechtel

2
ผู้คนจำนวนมากเริ่มต้นชื่อส่วนต่อประสานกับ I, IEnumerable, IList ... ใน. Net Framework al ส่วนต่อประสานเริ่มต้นด้วย I.
tuinstoel

43

ฉันมีกฎโง่ ๆมากมาย แต่ไม่มากนักที่ฉันคิดว่าแปลก ๆ

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

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

คำสั่งที่ได้รับมอบหมายทั่วไป (verbose ใน Ada แล้ว) จะปรากฏในลักษณะดังนี้:

NABC_The_Package_Name.X := NABC_The_Package_Name.X + 
  CXYZ_Some_Other_Package_Name.Delta_X;

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

package Package_Name renames NABC_Package_Name;
package Some_Other_Package_Name renames CXYZ_Some_Other_Package_Name;
--// Repeated in this vein for an average of 10 lines or so

สิ่งที่ความคิดสร้างสรรค์ในหมู่พวกเราทำกันมากขึ้นคือการพยายามใช้หูดเพื่อสร้างชื่อแพ็คเกจ (หรือเซ่อ) ที่สมเหตุสมผล (ฉันรู้ว่าคุณกำลังคิดอะไรอยู่ แต่ไม่อนุญาตให้อธิบายและทำให้คุณอับอาย! ตัวอย่างเช่นฉันอยู่ในกลุ่มรหัสC ommon และฉันต้องการสร้างแพ็คเกจเพื่อเชื่อมต่อกับกลุ่มW orkstation หลังจากการประชุมระดมสมองกับ Workstation guy เราตัดสินใจตั้งชื่อแพ็คเกจของเราเพื่อให้คนที่ต้องการทั้งสองต้องเขียน:

with CANT_Interface_Package;
with WONT_Interface_Package;

1
ด้วยทั้งหมดนั้นและ NASA ยังไม่สามารถคิดได้ว่าจะคำนวณเป็นกิโลเมตรหรือไมล์ ...
NotMe

16
ประณามและฉันคิดว่าคุณกำลังจะออกไปข้างนอกและใช้แผนการตั้งชื่อแพ็คเกจ CUN * _ และ W * NK_ ขออภัยฉันมี tourettes ที่ไหม้ช้าระเบิดได้ แต่คุณมีมากสนุกมาก!
defmeta

41

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

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


ไฮไลต์อีเมลคลิกลบเสร็จแล้ว
TheLQ

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

2
รับสิ่งที่ดีที่สุดของทั้งสองโลก - มุ่งมั่นที่จะสาขาของคุณทุกครั้งที่คุณไม่ต้องการสูญเสียอะไร Rebase และสควอชเหล่านั้นกระทำเมื่อคุณพร้อมที่จะนำพวกเขาเป็นหลัก (ให้อภัยคำศัพท์คอมไพล์ - ฉันแน่ใจว่ามันเป็นไปได้ใน Mercurial และระบบอื่น ๆ อีกมากมายเช่นกัน)
Michael Anderson

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

34

ทำแบบสอบถามฐานข้อมูลทั้งหมดผ่านขั้นตอนการจัดเก็บใน SQL Server 2000 จากแบบสอบถามที่ซับซ้อนหลายตารางเพื่อง่าย ๆ เช่น:

select id, name from people

ข้อโต้แย้งในความโปรดปรานของขั้นตอนคือ:

  • ประสิทธิภาพ
  • ความปลอดภัย
  • การบำรุงรักษา

ฉันรู้ว่าหัวข้อขั้นตอนค่อนข้างขัดแย้งดังนั้นอย่าลังเลที่จะให้คะแนนคำตอบของฉันในเชิงลบ;)


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

2
ฉันยอมรับว่าเพื่อวัตถุประสงค์ทั่วไปไม่ใช่ 100% wtf แต่ดูลิงก์นี้: codinghorror.com/blog/archives/000292.html
azkotoki

2
"ความปลอดภัยคือเหตุผลหลักในการใช้ SP" ไม่เกี่ยวกับ SP ใน SQL Server นั้นปลอดภัยกว่า พวกเขาจะปลอดภัยเมื่อเรียกว่าเป็น paremeterized แบบสอบถามซึ่งสามารถทำได้เช่นเดียวกับ SQL แบบไดนามิก
Flory

4
Nah: sprocs มีประโยชน์ ในขณะที่มันอาจเป็นความเจ็บปวดในบางครั้งคุณท้ายเขียนอินเทอร์เฟซฐานข้อมูลที่ดีกว่า dba ของคุณสามารถมีเวลาวิเคราะห์ปัญหาประสิทธิภาพได้ง่ายขึ้นและสามารถปรับปรุงระบบการผลิตโดยไม่ต้องเปลี่ยนรหัสแอป ฉันไม่สนับสนุนตรรกะ biz ใน sprocs ว่า
Robert Paulson

4
การฝังคำค้นหาในโค้ดที่คอมไพล์นั้นเป็นความเจ็บปวดฉันเป็น 100% ที่อยู่เบื้องหลังนโยบาย sprocs 100% สำหรับสิ่งที่เป็นนามธรรม แต่เพียงผู้เดียว
annakata

33

จะต้องมีการทดสอบ 165 หน่วย (ไม่จำเป็นต้องเป็นแบบอัตโนมัติ) ต่อ 1,000 บรรทัดของรหัส ที่ได้ผลในการทดสอบหนึ่งครั้งสำหรับทุก ๆ 8 บรรทัด

จำเป็นต้องพูดบางบรรทัดของโค้ดค่อนข้างยาวและฟังก์ชันส่งคืนพอยน์เตอร์นี้เพื่ออนุญาตการโยง


การทดสอบหน่วยไม่อัตโนมัติ
pupeno

พวกเขามากับเลข 8 ได้อย่างไร?
Rohit

1
จะเกิดอะไรขึ้นถ้าคุณมี 164 166?
Daniel Daranas

8
มากกว่า 6 บรรทัด
เรียกซ้ำ

1
ขึ้นอยู่กับว่าการทดสอบของคุณมีความละเอียดแค่ไหน ฉันคิดว่าfunction(x).should == 2จะเป็นการทดสอบเดี่ยวในขณะที่คนอื่นจะรวม 10 คนด้วยกันและเรียกมันว่าการทดสอบเดียว
Orion Edwards

30

เราต้องเรียงลำดับฟังก์ชั่นทั้งหมดในชั้นเรียนตามลำดับตัวอักษรเพื่อให้ง่ายต่อการค้นหา ไม่เป็นไรไอเดียจะหล่นลงมา นั่นคือการคลิกมากเกินไป

(หัวหน้าฝ่ายเทคโนโลยีเดียวกันเขียนแอปเพื่อลบความคิดเห็นทั้งหมดจากซอร์สโค้ดของเรา)


3
แน่นอนว่า 'ความคิดเห็นเป็นเพียงความยุ่งเหยิงเพราะ ... และคิดว่าจะประมวลผล pre-processor กี่รอบในเวลารวบรวม! (แอพนี้สนุกกว่ากฎดีเลย)
ojrac

7
แน่นอน! นักพัฒนาควรจะเขียนโค้ดไม่เสียความคิดเห็นเขียนเวลา :)
แดเนียล Rikowski

2
ใช่ และความคิดเห็นทำให้การสร้างช้าลง!
เกร็ก D

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

3
ฉันเรียงลำดับวิธีสมาชิก ฯลฯ เรียงตามลำดับตัวอักษรในกลุ่มของพวกเขาทั้งในส่วนหัวและแหล่งที่มา ... แต่เพียงเพราะฉันครอบงำ
Jon Purdy

29

ในปี 1987 หรือมากกว่านั้นฉันทำงานกับ บริษัท ที่จ้างฉันเพราะฉันเป็นหนึ่งในไม่กี่คนที่รู้วิธีใช้วิวรณ์ วิวรณ์หากคุณไม่เคยได้ยินเรื่องนี้มาก่อนการใช้งานระบบปฏิบัติการ Pick บนพีซีซึ่งหากคุณไม่เคยได้ยินชื่อของมันมาจากนักประดิษฐ์ก็คือ Dick Pick สามารถพูดได้มากมายเกี่ยวกับ Pick OS ซึ่งส่วนใหญ่ดี จำนวนผู้ขายซูเปอร์มินิ (อย่างน้อยที่สุดและอย่างน้อยที่สุด) ใช้การเลือกหรือการใช้งานแบบกำหนดเองของมัน

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

เขาได้สร้างมาตรฐานการเข้ารหัสจำนวนหนึ่งสำหรับซอฟต์แวร์ Prime-based ซึ่งส่วนใหญ่มาจากเงื่อนไขพื้นฐานสองประการคือ 1) การใช้เทอร์มินัลใบ้ 80 คอลัมน์และ 2) ความจริงที่ว่าตั้งแต่ Prime ไม่ได้ ไม่มีเครื่องมือแก้ไขภาพเขาจะเขียนเอง เนื่องจากความสามารถในการพกพาของรหัสพิคเขาจึงนำบรรณาธิการของเขาลงไปในวิวรณ์และสร้างโครงการทั้งหมดบนพีซีโดยใช้มัน

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

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

โอ้ใช่. เมื่อคุณแสดงความคิดเห็นทุกบรรทัดของรหัสมันเป็นกับความคิดเห็นในตอนท้ายของบรรทัด กล่าวโดยสรุปตัวอักษร 64 ตัวแรกของแต่ละบรรทัดนั้นเป็นรหัสจากนั้นก็มีเครื่องหมายอัฒภาคแล้วคุณมี 15 ตัวอักษรเพื่ออธิบายว่าตัวอักษร 64 ตัวของคุณทำอะไร ในระยะสั้นเรากำลังใช้ภาษาการประชุมเพื่อจัดรูปแบบรหัส Pick / Basic ของเรา สิ่งนี้นำไปสู่สิ่งต่าง ๆ ที่มีลักษณะดังนี้:

EVENT.LIST[DATE.INDEX][-1] = _         ;ADD THE MOST RECENT EVENT
   EVENTS[LEN(EVENTS)]                 ;TO THE END OF EVENT LIST

(อันที่จริงหลังจาก 20 ปีที่ฉันลืมไวยากรณ์การต่อเนื่องของ R / Basic ในที่สุดดังนั้นจึงอาจดูแตกต่างกัน แต่คุณจะได้รับแนวคิดนี้)

นอกจากนี้เมื่อใดก็ตามที่คุณต้องแทรกความคิดเห็นหลายบรรทัดกฎก็คือคุณใช้กล่องดอกไม้:

************************************************************************
**  IN CASE YOU NEVER HEARD OF ONE, OR COULDN'T GUESS FROM ITS NAME,  **
**  THIS IS A FLOWER BOX.                                             **
************************************************************************

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

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

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

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


14
+1 สำหรับฟอร์แมตความคิดเห็นเมื่อพิมพ์
BradC

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

26

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

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

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


2
ฉันเดาบนกระดาษในห้องประชุมฟังดูดี แต่ฉันเสียดายโปรแกรมเมอร์ที่ต้องทำตาม
TheLQ

ต้องได้รับการออกแบบโดยครูสอนภาษาอังกฤษ
โยดี้

ต้องได้รับการออกแบบโดยโปรแกรมเมอร์ภาษาโคบอล
bruno

จะต้องมีการใช้จำนวนมากgotoของ
new123456

26

มาตรฐานการเข้ารหัส C ที่เขียนจากภายนอกที่มีกฎ 'ไม่ต้องพึ่งพาตัวดำเนินการที่มีมาก่อนและใช้วงเล็บ'

ยุติธรรมเพียงพอความตั้งใจที่ชัดเจนคือการห้าม:

a = 3 + 6 * 2;

ในความโปรดปรานของ:

a = 3 + (6 * 2);

สิ่งนี้คือการบังคับใช้โดยเครื่องมือที่เป็นไปตามกฎไวยากรณ์ C ที่ '=', '==', '.' และการเข้าถึงอาร์เรย์เป็นโอเปอเรเตอร์ ดังนั้นรหัสชอบ:

a[i].x += b[i].y + d - 7;

ต้องเขียนเป็น:

((a[i]).x) += (((b[i]).y + d) - 7);

2
อาจจะ (((a) [(i)]). x) + = (((((b) [[i])). y) + (d)) - (7)); ?
Behrooz
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.