มาตรฐานการเข้ารหัส. NET / C # ที่แนะนำ? [ปิด]


19

คุณคิดว่ามาตรฐานการเข้ารหัสแบบใดที่มีความสำคัญต่อโครงการ. NET / C # นี่อาจเป็นอะไรก็ได้จากการรับมือกับการจัดฟันแบบโค้งงอและการเว้นวรรค หรืออาจเป็นคำถามพื้นฐานเพิ่มเติมเช่นเนมสเปซใน. NET Framework ที่ควรหลีกเลี่ยงแนวปฏิบัติที่เหมาะสมที่สุดกับไฟล์กำหนดค่าเป็นต้น

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

คำตอบ:


29

นี่คือคู่มืออย่างเป็นทางการของ Microsoft เกี่ยวกับมาตรฐานการเข้ารหัสสำหรับ. NET Framework เวอร์ชัน 4.0

หากคุณต้องการรุ่นเก่า 1.1 ลองที่นี่

ฉันไม่จำเป็นต้องทำตามสิ่งนี้กับ 'T' อย่างที่พวกเขาพูด อย่างไรก็ตามเมื่อมีข้อสงสัยนี่เป็นสถานที่ที่ดีที่สุดในการเริ่มต้นให้สอดคล้องกับ. NET Framework ปัจจุบันซึ่งทำให้ทุกคนง่ายขึ้นไม่ว่าพวกเขาจะยังใหม่กับโครงการของคุณโดยเฉพาะหรือไม่ก็ตาม


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

ฉันจะได้รับคำติชมเกี่ยวกับ downvote ได้ไหม?
Ryan Hayes

คุณไม่ทำตามอะไร
JeffO

มีหลายอย่างในนั้นและฉันยังไม่ได้จำ ดังนั้นแทนที่จะบอกว่าฉันทำตามอย่างแน่นอน (ซึ่งฉันไม่รู้ว่าฉันทำดังนั้นอาจเป็นหรือไม่จริงก็ได้) ฉันแค่บอกว่าฉันทำไม่ได้ฮ่าฮ่า ถ้าฉันรู้ทุกสิ่งฉันก็คงจะทำ
Ryan Hayes

10

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

นอกจากนี้คุณยังสามารถแก้ไขกฎที่มาพร้อมกับค่าเริ่มต้น



5

เรานำสิ่งนี้ไปใช้ในสำนักงานของเรา มันเขียนโดย Lance Hunt และมันค่อนข้างครอบคลุม:

http://weblogs.asp.net/lhunt/pages/CSharp-Coding-Standards-document.aspx


มันยังสั้นเมื่อเปรียบเทียบกับแนวทางการออกแบบกรอบ จำนวนมากของสิ่งที่คุณต้องการสามารถพิมพ์บน 2 หน้า นี่คือความชอบของฉัน
บรู๊ค

4

เริ่มต้นด้วยFxCop มันจะบอกคุณเกี่ยวกับการละเมิดหลักปฏิบัติที่ดีที่สุดในรหัสที่คุณมีอยู่


FxCop ดูไบนารีมันจะไม่บอกคุณเกี่ยวกับรูปแบบการเข้ารหัส แต่จะพบปัญหาบางอย่าง
Steve

2

ฉันพยายามเลือกชุดสไตล์ทั่วไปจากแหล่งต่าง ๆ บางส่วนที่ไม่ได้กล่าวถึงก่อนหน้านี้:


2

ฉันต้องแนะนำมาตรฐานที่จัดทำโดย SSW (บริษัท ที่ปรึกษาชาวออสเตรเลีย)

ไม่ใช่แค่การเข้ารหัส แต่เป็น Project Management ฯลฯ ... เป็นทรัพยากรที่มีค่าอย่างไม่น่าเชื่อ

http://www.ssw.com.au/ssw/standards/default.aspx



2

ฉันใช้แอปพลิเคชันต่อไปนี้เพื่อรักษามาตรฐานการเข้ารหัสนอกเหนือจากกฎ camelback ชื่อวิธีการและอื่น ๆ

GhostDoc - เพิ่มความคิดเห็นที่สร้างขึ้นอัตโนมัติที่ด้านบนของแต่ละวิธี แอพพลิเคชั่นนี้ให้สรุปวิธีการเริ่มต้นที่ดี (ฟรี)

http://submain.com/products/ghostdoc.aspx

Resharper - การวิเคราะห์รหัสและการปรับโครงสร้างใหม่ http://www.jetbrains.com/resharper/

StyleCop - เป็นการทำความสะอาดสุดท้ายก่อนที่ฉันจะเช็คอินที่ TFS (ฟรี)

http://code.msdn.microsoft.com/sourceanalysis


1

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

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

ทั้งหมดไม่มีประโยชน์ในภาพรวม

สิ่งที่สำคัญในการเขียนโค้ดที่มีประสิทธิภาพรักษาและอ่านได้นั้นไม่เคยถูกกล่าวถึงในมาตรฐานเหล่านี้

ตัวอย่างเช่น: คุณวางตัวแปรไว้ที่ด้านบนหรือด้านล่างของชั้นเรียนหรือไม่? ถ้าใครจัดกลุ่มตัวแปรของคุณเข้าด้วยกันตามหน้าที่การงาน นั่นสำคัญ (คุณจะรู้เรื่องนี้หากคุณเคยเห็นตัวแปร 20 ตัวกระจายอยู่รอบ ๆ สถานที่)

พวกเขาบอกให้คุณใส่วงเล็บปีกกาของคุณในบางสถานที่ เรื่องใหญ่! ฉันสามารถอ่านโค้ดได้ทั้งแบบ K&R และ ANSI การถ่ายคร่อมสไตล์มันไม่สำคัญ สิ่งที่สำคัญคือถ้าคลาสหน้าต่างทั้งหมดมีความแตกต่างอย่างใด (เช่นถูกต่อท้ายด้วย Form หรือ Dlg หรืออะไรก็ตาม) เพื่อให้คุณสามารถดูไฟล์ที่มีรหัสหน้าต่างและเป็นวัตถุธรรมดา

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

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

กล่าวโดยย่อ - พวกเขาอยู่ที่นั่นเพื่อช่วยให้เราทำงานร่วมกันไม่ใช่เป็นกฎเกณฑ์ที่เข้มงวดซึ่งต้องปฏิบัติตามเสมอ


1

คำเตือน: ลัทธิปฏิบัตินิยมด้านล่าง - คำถามดูเหมือนว่าจะมีคำพูดที่ทำให้เกิดการถกเถียงเกี่ยวกับรูปแบบวงเล็บปีกกา "เหมาะสม" ฯลฯ ฉันไม่ยอมแพ้กับเรื่องไร้สาระในเวลานั้น

  1. ติดตั้งReSharperปล่อยให้เป็นค่าเริ่มต้นทำตามที่ระบุไว้

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

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

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

หากคุณต้องการเพิ่มสิ่งที่ resharper สามารถทำได้เพื่อเพิ่มStyleCopด้วย StyleCop สำหรับปลั๊กอิน ReSharper ดังกล่าวจะมีความขัดแย้งเล็กน้อยระหว่างหลักเกณฑ์ MS และค่าเริ่มต้น ReSharper ฉันจะไปกับ ReSharper กับสิ่งเหล่านั้น แต่ไม่ว่าคุณจะเลือกที่จะบันทึกผลลัพธ์ลงในไฟล์กำหนดค่า ReSharper แบ่งปันให้กับทีมของคุณ

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

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