নির্দেশিকা ব্যবহার করে কেন আপনার অপ্রয়োজনীয় সি # অপসারণ করা উচিত?


216

উদাহরণস্বরূপ, আমার খুব কমই প্রয়োজন:

using System.Text;

তবে এটি সর্বদা ডিফল্টরূপে থাকে। আমি ধরে নিয়েছি আপনার কোডটিতে অপ্রয়োজনীয় উপস্থিত থাকলে অ্যাপ্লিকেশনটি আরও মেমরি ব্যবহার করবে কোডটিতে নির্দেশাবলীর সাহায্যে । তবে আমার সম্পর্কে আরও কিছু সচেতন হওয়া উচিত?

এছাড়াও, একই ব্যবহারের নির্দেশনা যদি কেবল একটি ফাইল বনাম সর্বাধিক / সমস্ত ফাইলগুলিতে ব্যবহার করা হয় তবে তাতে কোনও তফাত আসে?


সম্পাদনা: নোট করুন যে এই প্রশ্নটি কোনও সম্পর্কিত বিবৃতি বলে সম্পর্কিত সম্পর্কিত সম্পর্কিত ধারণা সম্পর্কে নয় , যখন কোনও বিষয় যখন সুযোগের বাইরে চলে যায় তখন তার আইডিসপোজেবলডিসপোজ পদ্ধতিটি বলা হয় ens সি # তে "ব্যবহার" এর ব্যবহারগুলি দেখুন ।

উত্তর:


181

আপনার প্রোগ্রামটি চললে এটি কোনও পরিবর্তন করবে না। যা প্রয়োজন তা চাহিদা অনুযায়ী লোড করা হয়। সুতরাং আপনার যদি বিবৃতিটি ব্যবহার করে থাকে তবে আপনি যদি সেই নামস্পেস / সমাবেশে কোনও প্রকার না ব্যবহার করেন, তবে যে সমাবেশটি বিবৃতি ব্যবহার করে এর সাথে সম্পর্কিত হয় তা লোড হবে না।

মূলত, এটি কেবল ব্যক্তিগত পছন্দ হিসাবে পরিষ্কার করা।


@ ফ্রান্সসিপ - এটাই আমি বলছি। ব্যবহার অ্যাসেম্বলি লোডিংকে প্রভাবিত করে না, সমাবেশে থাকা কোনও প্রকারের রেফারেন্স না দেওয়া পর্যন্ত কোনও সমাবেশ লোড করা হয় না।
ড্যারেন কোপ

69
তবে এটি সংকলনের সময় এবং ইন্টেলিসেন্স / আইডিই প্রতিক্রিয়াটিকে প্রভাবিত করতে পারে।
Marchy

ফ্রেঞ্চি / ফ্লাইসওয়াত: মেটা.স্ট্যাকেক্সেঞ্জার.কমিশন
জনবি

475

সেখানে হয় অব্যবহৃত সরানোর ব্যবহার (গুলি) / নামব্যবধান, পক্ষপাত কোডিং ছাড়াও জন্য কিছু কিছু কারণ:

  • কোনও প্রকল্পে অব্যবহৃত ক্লজগুলি অপসারণ করে সংকলনটি দ্রুত তৈরি করতে পারে কারণ সংকলকটির সমাধানের জন্য চেহারা সংক্রান্ত ধরণের নামগুলির কম জায়গা রয়েছে। (এটি এক্সটেনশন পদ্ধতির কারণে বিশেষত সি # 3.0 এর ক্ষেত্রে সত্য, যেখানে সংকলককে আরও ভাল ম্যাচের সম্ভাব্য জেনেরিক ধরণের অন্তর্ভুক্তি এবং জেনেরিক ধরণের ল্যাম্বডা এক্সপ্রেশনগুলির জন্য এক্সটেনশন পদ্ধতির জন্য সমস্ত নেমস্পেসগুলি অনুসন্ধান করতে হবে)
  • ভবিষ্যতের বিল্ডগুলিতে নামের সংঘর্ষ এড়াতে সম্ভাব্যভাবে সাহায্য করতে পারে যখন ব্যবহৃত নামের জায়গাগুলিতে কিছু প্রকারের মতো একই নামযুক্ত অব্যবহৃত নেমস্পেসগুলিতে নতুন ধরনের যুক্ত করা হয়।
  • কোডিং করার সময় সম্পাদক স্বয়ংক্রিয় সমাপ্তি তালিকার আইটেমগুলির সংখ্যা হ্রাস করবে, সম্ভবত দ্রুত টাইপিংয়ের দিকে পরিচালিত করবে (সি # 3.0 এ এটি দেখানো এক্সটেনশন পদ্ধতির তালিকাও হ্রাস করতে পারে)

অব্যবহৃত নেমস্পেসগুলি মুছে ফেলা কি করবে না :

  • সংকলকের আউটপুট যে কোনও উপায়ে পরিবর্তন করুন।
  • সংকলিত প্রোগ্রামটির কার্যকর প্রয়োগ (দ্রুত লোডিং, বা আরও ভাল পারফরম্যান্স) কোনওভাবেই পরিবর্তন করুন।

ফলস্বরূপ অ্যাসেম্বলিটি সরানো (গুলি) ব্যবহার করে বা অব্যবহৃত ছাড়া একই।


3
এবং আপনি ফাইলগুলি সংশোধন করার সাথে সাথে, আপনি ফাইলগুলির শুরুতে আরও এবং আরও বেশি নেমস্পেস যুক্ত করবেন। সুতরাং আপনি যদি ফাইলটি খোলার সময় অব্যবহৃত নেমস্পেসগুলি অপসারণ না করেন তবে আপনার সমস্ত কিছুই প্রকৃত বাস্তবায়নের পরিবর্তে নেমস্পেসগুলির একটি দৈত্য তালিকা।
Mert Akcakaya

5
দ্রুত সংকলন সম্পর্কিত: ফাইলগুলিতে অব্যবহৃত usingনির্দেশনা .csআপনাকে আপনার প্রকল্প থেকে কিছু (অন্যথায় অব্যবহৃত) সমাবেশ উল্লেখগুলি সরিয়ে ফেলা থেকে বিরত রাখতে পারে .csproj। আপনার যদি অনেক প্রকল্পের "সমাধান" থাকে তবে প্রকল্পগুলির মধ্যে অপ্রয়োজনীয় তথ্যসূত্রগুলি প্রকল্পগুলিকে একটি নির্দিষ্ট ক্রমে সংকলিত করতে বাধ্য করবে যখন বাস্তবে তারা স্বাধীন এবং সমান্তরালে সংকলিত হতে পারে। সুতরাং usingআপনি একাধিক প্রকল্প সমাধানে অব্যবহৃত প্রকল্পের রেফারেন্সগুলি পরীক্ষা করার আগে অব্যবহৃত নির্দেশনাগুলি সরিয়ে দিন ।
জেপ্প স্টিগ নীলসন

1
এটি দুর্দান্ত ব্যাখ্যা - শেষ পর্যন্ত এর সাথে পারফরম্যান্সের সাথে খুব ভাল কিছু করার দরকার নেই বরং সেরা অনুশীলন রয়েছে। ব্যাখ্যা করার জন্য ধন্যবাদ!
জিস্যান্ডার্স

39

কোড পরিচ্ছন্নতা হয় গুরুত্বপূর্ণ।

কেউ অনুভূতি পেতে শুরু করে যে যখন কেউ অতিরিক্ত ব্যবহারের ঘটনা দেখছে তখন কোডটি অনিচ্ছাকৃত এবং ব্রাউজফিল্ড পথে হতে পারে। সংক্ষেপে, আমি যখন বিবৃতি ব্যবহার করে কিছু অব্যবহৃত দেখি তখন আমার মস্তিষ্কের পিছনে কিছুটা হলুদ পতাকা উঠে যায় আমাকে "সাবধানতার সাথে এগিয়ে যেতে" বলে। এবং প্রোডাকশন কোডটি পড়া কখনই আপনাকে সেই অনুভূতি দেয় না।

সুতরাং আপনার ব্যবহারগুলি পরিষ্কার করুন। খসখস হয়ে যাবেন না। আত্মবিশ্বাস অনুপ্রেরণা। আপনার কোডটি সুন্দর করুন। অন্য দেবকে সেই উষ্ণ-ফিজি অনুভূতি দিন।


এখন এটিই আমি শুনতে চেয়েছিলাম :-) আমি Organize Usings -> Remove and Sortএখন থেকে এবং পরে বেশ কিছু করতে ব্যবহৃত হয়েছি । বিটিডাব্লু, আমার কাছে উপরের দুটি বিকল্প Organize Usingsঅর্থহীন। আমি VS2013 বিটিডব্লিউ সম্পর্কে কথা বলছি।
Sнаđошƒаӽ

30

এর সাথে মিলে এমন কোনও আইএল নির্মাণ নেই using। সুতরাং, usingবিবৃতিগুলি আপনার অ্যাপ্লিকেশন মেমরিটিকে বাড়ায় না, কারণ এর জন্য উত্পন্ন কোনও কোড বা ডেটা নেই।

Usingসংক্ষিপ্ত সময়ে শুধুমাত্র সম্পূর্ণরূপে যোগ্য টাইপের নামগুলিতে সংক্ষিপ্ত প্রকারের নামগুলি সমাধান করার উদ্দেশ্যে ব্যবহৃত হয়। সুতরাং, একমাত্র নেতিবাচক প্রভাব অপ্রয়োজনীয়using হ'ল সংকলনের সময় কিছুটা কমপ্লাই করে সময় কমিয়ে আনা এবং সংকলনের সময় কিছুটা বেশি মেমোরি গ্রহণ করা। যদিও আমি তা নিয়ে উদ্বিগ্ন হব না।

সুতরাং, আপনার usingপ্রয়োজন নেই এমন বিবৃতিগুলির একমাত্র আসল নেতিবাচক প্রভাব হ'ল ইন্টেলিজেন্সে, কারণ আপনি টাইপ করার সময় সম্পূর্ণ হওয়ার সম্ভাব্য ম্যাচের তালিকায়।


4

আপনি যদি নিজের জায়গাগুলির নাম স্থানটিতে (অব্যক্ত) ক্লাসগুলির মতো কল করেন তবে আপনার নাম সংঘর্ষ হতে পারে। System.Text এর ক্ষেত্রে, আপনি যদি "এনকোডার" নামে একটি শ্রেণি নির্ধারণ করেন তবে আপনার সমস্যা হবে।

যাইহোক এটি সাধারণত একটি ছোট সমস্যা এবং সংকলক দ্বারা সনাক্ত করা হয়।


2

আপনার অ্যাপ্লিকেশনটি আরও মেমরি ব্যবহার করবে না। আপনি কোড ফাইলগুলিতে যে ক্লাসগুলি ব্যবহার করেন তা সন্ধান করার জন্য এটি সংকলকটির জন্য। এটি সত্যিই পরিষ্কার না হয়ে আঘাত করতে পারে না।


2

এটি মূলত ব্যক্তিগত পছন্দ। আমি সেগুলি নিজেই পরিষ্কার করি (বিবৃতি ব্যবহার করে যখন অপ্রয়োজনীয় তখন রিশার্পার আমাকে বলার ভাল কাজ করে)।

কেউ বলতে পারেন যে এটি সংকলনের সময় কমতে পারে তবে কম্পিউটার এবং সংকলক গতিতে আজকাল এটি কোনও উপলব্ধিযোগ্য প্রভাব ফেলবে না।


2

অতিরিক্ত usingনির্দেশিকা ছেড়ে দেওয়া ঠিক আছে। এগুলি অপসারণ করার জন্য কিছুটা মূল্য আছে তবে খুব বেশি নয়। উদাহরণস্বরূপ, এটি আমার ইন্টেলিজেন্স সমাপ্তির তালিকাকে ছোট করে তোলে এবং তাই নেভিগেট করা সহজ।

সংকলিত সমাবেশগুলি বহিরাগত দ্বারা প্রভাবিত হয় না using নির্দেশ ।

কখনও কখনও আমি এগুলি একটি ভিতরে রাখি #region, এবং এটি ধসে পড়তে দেব ; এটি ফাইলটি দেখতে একটু ক্লিনার করে তোলে। আইএমও, এটি কয়েকটি ভাল ব্যবহারগুলির মধ্যে একটি #region


1
অঞ্চল ছাড়াই এগুলি ভেঙে
ফেলা যায়

1
@ বাতিশচেভ: হ্যাঁ, এটি ভিএস 2010-এ সত্য।
জে বাজুজি

"কয়েকটি ভাল ব্যবহারগুলির মধ্যে একটি #region", তাই আপনার ব্যবহারটি #regionবেশিরভাগ উপায়েই খারাপ?
স্টিভেন

হ্যাঁ, #regionএকটি কোড গন্ধ। এটি বলছে যে আপনার ক্লাসে খুব বেশি চলছে।
জে বাজুজি

2

আপনি যদি নিজের কোডটি পরিষ্কার রাখতে চান তবে ব্যবহৃত usingবিবৃতিগুলি ফাইল থেকে সরানো উচিত। সুবিধাগুলি খুব স্পষ্ট দেখা যায় যখন আপনি কোনও সহযোগী দলে কাজ করেন যা আপনার কোড বোঝার দরকার আছে, ভাবেন আপনার সমস্ত কোড বজায় রাখতে হবে, কম কোড = কম কাজ, সুবিধাগুলি দীর্ঘমেয়াদী।


1

এগুলি কেবল একটি শর্টকাট হিসাবে ব্যবহৃত হয়। উদাহরণস্বরূপ, আপনাকে লিখতে হবে: প্রতিবার System.Int32 যদি আপনার সিস্টেম ব্যবহারের ব্যবস্থা না থাকে; শীর্ষে

অব্যবহৃতগুলি অপসারণ করা আপনার কোডটিকে আরও পরিষ্কার দেখায়।


1

ব্যবহারের বিবৃতি আপনাকে কেবল আপনার ব্যবহৃত ধরণের যোগ্যতা থেকে দূরে রাখে। আমি ব্যক্তিগতভাবে সেগুলি পরিষ্কার করতে পছন্দ করি। সত্যিই এটি নির্ভর করে যে কোনও লোকাল মেট্রিক কীভাবে ব্যবহৃত হয়


1

আপনি প্রকৃতপক্ষে কেবলমাত্র নেমস্পেসগুলি ব্যবহার করলে আপনাকে আপনার কোড ডকুমেন্টেড রাখতে দেয়।

আপনার কোডের কোন অংশগুলি কোনও অনুসন্ধান সরঞ্জাম দ্বারা একে অপরকে কল করছে তা আপনি সহজেই আবিষ্কার করতে পারেন।

আপনার যদি অব্যবহৃত নেমস্পেস থাকে তবে কোনও অনুসন্ধান চালানোর সময় এর অর্থ কিছুই নয়।

আমি এখন নেমস্পেসগুলি পরিষ্কার করার জন্য কাজ করছি, কারণ আমাকে ক্রমাগত জিজ্ঞাসা করা হয় অ্যাপ্লিকেশনটির কোন অংশগুলি একই উপায়ে এক বা অন্য কোনও উপায়ে অ্যাক্সেস করছে।

আমি জানি যে নামগুলি স্পেসে সরাসরি ডাটাবেসের মাধ্যমে এবং ইন-ডাইরেক্ট ওয়েব সার্ভিসের মাধ্যমে ডেটা অ্যাক্সেসের কারণে কোন অংশগুলি প্রতিটি উপায়ে ডেটা অ্যাক্সেস করে।

আমি এই সব একবারে করার সহজ উপায় সম্পর্কে ভাবতে পারি না।

আপনি যদি চান যে আপনার কোডটি একটি কালো বাক্স হয়ে উঠুক (বিকাশকারীদের কাছে), তবে হ্যাঁ তাতে কিছু আসে যায় না। তবে সময়ের সাথে সাথে যদি এটি বজায় রাখতে হয় তবে এটি অন্যান্য কোডের মতো মূল্যবান ডকুমেন্টেশন।


0

'ব্যবহার করা' বিবৃতিটি কার্য সম্পাদনকে প্রভাবিত করে না কারণ এটি কেবল আপনার সনাক্তকারীদের নাম যোগ্যতার ক্ষেত্রে সহায়ক। সুতরাং পরিবর্তে টাইপ করা, এর System.IO.Path.Combine (...) , আপনি কেবল টাইপ করতে পারেন Path.Combine (...) আপনি আছে System.IO ব্যবহার


0

আপনার প্রকল্পটি তৈরি করার সময় সংকলকটি সবকিছু অনুকূল করার জন্য প্রচুর কাজ করে তা ভুলে যাবেন না। এটি ব্যবহার করে অনেক জায়গায় ব্যবহৃত হয় বা 1 একবার সংকলন করে আলাদা করা উচিত নয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.