ฉันควรล้างส่วน "การใช้งาน" ด้วยเหตุผลใดใน C #


11

เมื่อฉัน refactoring รหัสของฉันฉันก็ขึ้น IDE ไปยังส่วนการใช้งานของคลาส C # ของฉันและทำความสะอาดnamespaces ที่ไม่ได้ใช้และnamespaces ที่ซ้ำกันและเรียงลำดับพวกเขาทั้งหมด

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

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


5
สิ่งนี้ได้รับการถามและตอบกลับใน Stack Overflow - stackoverflow.com/questions/4163320/unused-using-statements (และทั้งสองคำถามที่เชื่อมโยงในแถบด้านข้าง) - โดยทั่วไปไม่มีเหตุผลที่จะต้องกังวลเกี่ยวกับการใช้ที่ไม่ได้ใช้
ChrisF

การอ้างอิงที่ดี @ChrisF ฉันคิดว่าฉันได้รับคำตอบที่นั่น บางทีคุณควรเข้าร่วมกับคำถามนั้นหรือทำสิ่งที่คล้ายกัน :)
Saeed Neamati

ตรวจสอบสิ่งนี้ด้วย: stackoverflow.com/a/136646/333306

คำตอบ:


22

ไม่มีความแตกต่างด้านประสิทธิภาพไม่ว่าusingคุณจะมีคำสั่งกี่คำ

แต่ฉันคิดว่ามันสมเหตุสมผลที่จะรักษาความสะอาดด้วยเหตุผลสองประการ:

  1. หากคุณดูไฟล์usings คุณจะเห็นว่าไฟล์มีการพึ่งพาใด วิธีนี้จะช่วยให้คุณทราบประเภทของไฟล์ในไฟล์ หากคุณทำสิ่งนี้การมีusings ตามลำดับเฉพาะจะช่วยให้คุณเห็นได้เร็วขึ้น
  2. หากคุณมีจำนวนมากเกินไปusingก็อาจบ่งบอกว่าคุณมีข้อกังวลที่ไม่ดีและประเภทในไฟล์ทำมากเกินไป

ทั้งสองอย่างนี้ไม่สำคัญมากดังนั้นคุณไม่ควรกังวลมากเกินไป แต่โดยส่วนตัวฉันคิดว่ามันคุ้มค่าที่จะรักษาความusingสะอาด


8

เหตุผลหลักของฉันในการทำความสะอาดระหว่างการใช้งบคือ:

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

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


ฉันไม่เข้าใจว่าทำไมสิ่งนี้ถึงไม่ได้รับการโหวตมากกว่า ความขัดแย้งของ Namespace เป็นปัญหาที่ถูกกฎหมาย
RubberDuck

7

“ ความสมบูรณ์แบบไม่ได้เกิดขึ้นเมื่อไม่มีอะไรเหลือให้เพิ่ม แต่เมื่อไม่มีอะไรเหลือให้ไป” - Antoine de Saint-Exupery

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


คำพังเพยที่ดี ฉันชอบความคิด +1;)
Saeed Neamati

4

มันแค่กำจัดสัญญาณรบกวนออกจากสัญญาณ เสียงรบกวนน้อยลงหมายความว่าง่ายต่อการรับสัญญาณเช่นเข้าใจถึงเจตนาของรหัส

ในฐานะที่เป็นตัวกำเนิดเสียงรบกวน


2
  • มันช่วยปรับปรุงการอ่านรหัสของคุณ
  • โดยปกติแล้วคุณไม่ควรปฏิบัติตามคำแนะนำนี้หากคุณมีงบเพียงเล็กน้อยเท่านั้น

  • มันเหมาะสมกว่าที่จะแยกโดยใช้ข้อความสั่งในส่วนต่างๆ

ตัวอย่างเช่น:

    using System.Web;

    using MyPlatform.FooX;        
    using MyPlatform.FooY;

    using MyFramework.Helpers;        
    using MyFramework.Extentions;

ถ้าฉันดูคลาสฉันก็จะเห็นได้ทันทีว่าคลาสที่กำหนดนั้นกำลังใช้แอสเซมบลี System.Web รวมถึงแพลตฟอร์มและเฟรมเวิร์กของเรา สิ่งนี้ทำให้ฉันมีความคิดคร่าว ๆ เกี่ยวกับการพึ่งพาและความซับซ้อนของมัน

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

using MyFramework.Extentions;
using MyFramework.Helpers;

using System.Web;

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