Iক্য জীবনচক্র পদ্ধতিগুলি কি ইউজড ইম্প্রিবিটলি অ্যাট্রিবিউট দিয়ে টীকাযুক্ত করা উচিত?


9

UsedImplicitlyবৈশিষ্ট্য সহ ইউনিটি লাইফসাইকেল পদ্ধতিগুলি বর্ননা করা কি আপনার কোডের পঠনযোগ্যতা উন্নত করে?

উদাহরণ স্বরূপ:

public class Example : MonoBehaviour
{
    [UsedImplicitly]
    private void Awake()
    {
        DoSomething();
    }

    private void DoSomething()
    {
        // ...
    }
}

"আপনার Monক্যের মনোবিহ্যুরিয়াস স্ট্রাকচারিং" এ এই ব্লগ পোস্টটি একটি কার্যকর সম্মেলন হিসাবে এই পদ্ধতির পরামর্শ দেয়।

  1. যেকোন lক্য জীবনচক্র পদ্ধতিগুলি (সূচনা, জাগ্রত করুন, আপডেট করুন, অনডেস্ট্রয় ইত্যাদি), ইভেন্ট পদ্ধতিগুলি এবং অন্যান্য ক্রিয়াকলাপগুলি যা স্পষ্টভাবে (বা স্বয়ংক্রিয়ভাবে) আপনার কোডটিতে [UsedImpectedly] বৈশিষ্ট্য সহ আহ্বান করেছে। এই অ্যাট্রিবিউটটি, যদিও ইউনিটিইজাইন.ডিল অন্তর্ভুক্ত রয়েছে, রিশার্পার দ্বারা আপাতদৃষ্টিতে আপত্তিহীন এমন পদ্ধতিগুলির কোড কোড ক্লিনআপ পরামর্শ অক্ষম করতে ব্যবহার করা হয়। এটি peopleক্যের ক্ষেত্রে আরও নতুন এবং আপনার কোডবেস, বিশেষত পরিদর্শকের মাধ্যমে উল্লেখ করা ইভেন্টগুলির জন্য কোডটি পড়া সহজ করে তুলতে সহায়তা করে।

(দ্রষ্টব্য: আমি মনে করি না যে রিশার্পার আপাতদৃষ্টিতে অবাস্তবহীন ityক্য জীবনকালীন পদ্ধতিগুলির জন্য কোড-ক্লিনআপ পরামর্শ দেখায়, যাতে এটি পুরানো পরামর্শ হতে পারে))

আমি উপরের পোস্টের সাথে একমত যে এটি thoseক্যতে নতুনদের জন্য এটি সহায়ক হতে পারে। আমিও মনে করি এটা সেই লেবেল উপযোগী হতে পারে ইউনিটি জীবনচক্র ফাংশন যে ঘন ঘন হিসাবে হিসাবে ব্যবহার করা হয় না Awake, Startএবং Update। তবে আমি ভাবছি যে এটি আসলে "ক্লিন কোড" এর জন্য একটি ভাল সম্মেলন, বা যদি এটি কেবল শব্দ হয় যা পাঠযোগ্যতা হ্রাস করে।


1
আমি ইউনিটিতে 2 টি গেম প্রকাশ করেছি এবং এটির অস্তিত্ব সম্পর্কে জানতাম না। আমি যদি না করতাম আমি সম্ভবত এটি স্পষ্টতার জন্য ব্যবহার করেছি এবং এটি শব্দকে বিবেচনা করব না।
ম্যাকএডেন

1
আরে, আমি পোস্টটির মূল লেখক। হ্যাঁ আমি মনে করি এটি জীবনচক্র পদ্ধতিগুলির জন্য ওভারকিল হতে পারে, বিশেষত উন্নত রেশার্পার সমর্থন দেওয়া হয়েছে। তবে আমি মনে করি যে ইভেন্ট কলব্যাকগুলি (যেমন অ্যানিমেশন এবং ইউনিটির ইউআই ইভেন্ট সিস্টেমের জন্য) বর্ণনা করা দরকারী যা কেবলমাত্র পরিদর্শকের মাধ্যমে রেফারেন্স করা। যদিও কোডবেস পরিচালনা করছেন এমন লোকদের উপর - আমি যখন এটি লিখেছিলাম, আমি এমন একটি সফটওয়্যার পরামর্শকারী সংস্থায় কর্মরত ছিলাম যেখানে কারও গেম ডেভয়ের অভিজ্ঞতা ছিল না, তাই আমি আমাদের মধ্যে একটি স্ট্যান্ডার্ড প্রতিষ্ঠা করতে চাইছিলাম। এটি পূর্ববর্তী ক্ষেত্রে কিছুটা খাঁটি, কারণ আমি পোস্টটির দৃষ্টি আকর্ষণ করার আশা করিনি।
মন

উত্তর:


10

এটি লক্ষ্য জনসংখ্যার উপর নির্ভর করে।

উপরের উদাহরণে লক্ষ্যযুক্ত ডেমোগ্রাফিক হ'ল রিশার্পার সরঞ্জাম, যা এই বৈশিষ্ট্যগুলি থেকে উপকৃত হয় কারণ এটি বার্তাগুলি দমন করে যা আপনার পক্ষে সহায়ক নয়। তবে আপনি যদি রিশ্যার্পার বা অনুরূপ কোনও সরঞ্জাম ব্যবহার করার প্রয়োজনীয়তা অনুভব না করেন (যদিও আপনার উচিত হওয়া উচিত, তাদের সময়ে সময়ে কিছু কার্যকর সমালোচনা থাকতে হবে), তবে আপনাকে সেই জনসংখ্যার বিষয়ে যত্ন নেওয়ার দরকার নেই।

যে কেউ যেহেতু প্রাথমিক ityক্য টিউটোরিয়াল করেছে সে খুব ভাল করেই জানে Startএবং Updateইউনিটি ইঞ্জিন দ্বারা স্পষ্টভাবে ব্যবহৃত হয়, সুতরাং এটি তাদের কোনও নতুন তথ্য দেয় না। আপনি যদি এটি একবার ভুলে যান তবে এটি সম্ভবত হ্যাকটিকে বিভ্রান্ত করতে পারে। এর সাথে আপনি কী বলতে চান? এটি কি আসলে একটি মনোবিহ্যাভিয়ার নয়? বা এমন কোনও অস্পষ্ট কারণ রয়েছে যার কারণে আপনি অবশ্যই এটি স্পষ্টভাবে কল করবেন যার সম্পর্কে আমি অবগত নই?

তবে, আপনি যদি অনভিজ্ঞ ডেভেলপারদের সাথে কাজ করছেন যাঁরা আরও বেশি otক্যবদ্ধ eventsক্যের মতো ঘটনার মতো পরিচিত না হন Reset(বিপজ্জনক, কারণ এটি স্পষ্টভাবে কল করা আপনার মনে হয় যা এটি করে না তা করতে পারে) তবে এটি সাহায্য করতে পারে। [UsedImplicitly]অ্যাট্রিবিউট তারপর তাদের বলুন হতে পারে তারা বর্গ যা পদ্ধতি কল কারণ ইঞ্জিন আছে জন্য চেহারা প্রয়োজন হবে না। তবে আবার, আপনার যদি ধারাবাহিকভাবে এটি করার শৃঙ্খলা থাকে তবে এটি কেবল মূল্যবান। এবং আপনার যদি সেই পরিমাণ স্ব-শৃঙ্খলা থাকে তবে আপনি একটি মন্তব্য যুক্ত করতে ঠিক ততই সম্মত হতে পারেন।


1
আমি "99% জনসংখ্যার জন্য এটি কোনও লাভ দেয় না" যুক্ত করব। এমনকি কয়েক ঘন্টা পরে নতুনরাও জীবনচক্রের পদ্ধতিগুলি সনাক্ত করতে শুরু করবে (তারা ভিএস-তে আলাদাভাবে বর্ণযুক্ত!)। এবং পুনঃভাগটি হ'ল: একটি ব্যয়বহুল লাইসেন্স, পুনর্গঠন করা যেতে পারে, এবং ওপি যেমন বলেছে এটি সম্ভবত ইতিমধ্যে প্যাচ করা হয়েছে any আমি মনে করি যে প্রত্যেকটি দ্বিতীয় পদ্ধতিতে তর্কযোগ্য মূল্যের বৈশিষ্ট্য সহ সজ্জিত করার চেয়ে একজন আরও কার্যকরভাবে তাদের সময় ব্যয় করতে পারে ।
আশ্চর্য

@ ওন্ড্রা ভিজ্যুয়াল স্টুডিওতে তারা আলাদাভাবে রঙিন হয়েছে তা দেখানোর জন্য ধন্যবাদ। Tools -> Options -> Tools for Unity -> General -> Unity Messages syntax highlightingসত্যটি সেট করা সত্ত্বেও আমি ভিজ্যুয়াল স্টুডিও 2017 এর মাধ্যমে কেন এটি আমার জন্য এটি করে না তা বোঝার চেষ্টা করব ।
সনি

1
ভিজ্যুয়াল স্টুডিও কেন আমার ityক্য পদ্ধতিগুলিকে রঙ দিচ্ছে না তা আমি তাকাতে পারিনি, তবে অন্য একটি উত্তর উল্লেখ করেছে যে রিশার্প্পের ইউনিটির জন্য একটি প্লাগইন রয়েছে যা ইউনিটি ইভেন্ট ফাংশনগুলি স্বয়ংক্রিয়ভাবে স্বীকৃতি দেয়। এছাড়া এই সংশ্লিষ্ট সেটিং হল: ReSharper -> Options -> Code Inspection -> Settings -> Enable code analysis -> Color identifiers
সনি

6

আমি যুক্তি দিচ্ছি যে আপনার এটি ব্যবহার করা উচিত নয়।

UsedImpectedly অ্যাট্রিবিউটটি Jetbrains.Annotations নেমস্পেস থেকে তাই কেবলমাত্র যদি ক্ষেত্রে এটি প্রয়োগ হয় তবে কোড ব্যবহার করা প্রত্যেকে ReSharper ব্যবহার করবে।

রিশার্পার ইউনিটির জন্য একটি প্লাগইন রয়েছে যা এটি ইতিমধ্যে আপনার জন্য পরিচালনা করে, কেবলমাত্র সেগুলি ব্যবহার করা হচ্ছে না এমন সতর্কতাগুলি সরাতে নয়, এটি একটি সামান্য ityক্য প্রতীক দিয়ে চিহ্নিত করে যাতে কোডটি পড়ে যে কেউ জানতে পারে যে তারা Unক্য দ্বারা আহ্বান করেছে are

এগুলি ব্যবহার করতে গিয়ে ভুল হতে পারে এমন সময় আমি একটি উদাহরণও যুক্ত করতে চাই। ধরুন আপনার মনো-বেহ্যাভিরের কাছ থেকে উত্তরাধিকারসূত্রে একটি বর্গ রয়েছে তবে রিফ্যাক্টরের পরে এর আর কোনও উত্তরাধিকার নেই। আপনি যদি [প্রযোজ্যভাবে] ব্যবহার করে ব্যক্তিগত পদ্ধতি চিহ্নিত করেন তবে আপনি সঠিক সতর্কতা পাবেন না। আপনি যদি পুনঃভাগের জন্য ityক্য প্লাগইন ব্যবহার করেন তবে এটি লক্ষ্য করবে যে আপনি আর মনোোবিহিরের কাছ থেকে উত্তরাধিকারী হবেন না এবং পদ্ধতিগুলি আর বলা হয়নি বলে সতর্কতা ছুঁড়ে দেবে।


1
আমি জানি না যে রিসার্পার প্লাগইনটি বিদ্যমান, এটি নির্দেশ করার জন্য ধন্যবাদ!
সনি

1
নোট করুন যে ইউনিটি Unক্য 5 হিসাবে ইউনিটিইজাইন.ডিল-এ রিশার্পার বৈশিষ্ট্যগুলি অন্তর্ভুক্ত করে শুরু করেছে - এই ফোরামের পোস্টটি দেখুন
সনি

5

আমি যুক্তি দিয়েছিলাম যে এটি সত্যিই আঘাত করতে পারে না।

Ityক্যের কাজের সাথে পরিচিত কারও পক্ষে এটি সম্ভবত কিছু যুক্ত করে না। এই ব্যক্তিরা ইতিমধ্যে ityক্যটির রানটাইম আপনার পক্ষ থেকে কী কল করে তার সাথে বেশ পরিচিত হতে চলেছে।

তবে আমার মতো কারও পক্ষে এটি সহায়ক হতে পারে। এমনকি যদি আমি জানতাম না যে এটি অফহ্যান্ড কী বোঝায় তবে আমি এটি সন্ধান করব এবং কোডটিতে কী চলছে সে সম্পর্কে আমাকে আরও ভাল ধারণা দেওয়ার পক্ষে এটি যথেষ্ট হবে।

এছাড়াও, যদি কেউ স্থিতিশীল বিশ্লেষণ সরঞ্জামগুলি ব্যবহার করে যেগুলি পদ্ধতি সম্পর্কে ভুলভাবে সতর্ক করে চলেছে, তবে আপনি সেই সতর্কতাগুলিকে একরকম শান্ত করতে চাইবেন, কারণ "অজ্ঞ" সতর্কবাণী এরকম কোনও আউটপুটে প্রকৃত সতর্কতাগুলি দেখতে আরও শক্ত করে তোলে । সার্জিক্যাল, স্থানীয়ীকৃত ফ্যাশনে (এই ক্ষেত্রে আপত্তিজনক পদ্ধতিগুলি অ্যাট্রিবিউটগুলির সাথে সজ্জিত করে) এই ধরণের সতর্কতা প্রকল্প-বিস্তৃতকরণকে অক্ষম করার মতো বিস্তৃত ব্যবস্থার চেয়ে সাধারণত এ জাতীয় সতর্কতাগুলি উপেক্ষা করা ভাল better


1
আপনার উত্তরের জন্য ধন্যবাদ. আমি প্রশ্ন পোস্ট করার সময় আমি আপনার উত্তরটির সাথে একইভাবে ভাবছিলাম, তবে আমি অন্যান্য পোস্টারদের সাথে একমত হয়েছি যারা উল্লেখ করেছেন যে বৈশিষ্ট্যটি ধারাবাহিকভাবে ব্যবহার না করা হলে এটি সম্ভাব্য বিভ্রান্তিকর হতে পারে।
সনি

3
হ্যাঁ, এগুলি ন্যায্য পয়েন্ট। যদি কারও কাছে স্থিতিশীল বিশ্লেষণ থাকে যা এটিকে ছাড়িয়ে যায় এবং কেউ সেই সতর্কতার সাথে গুরুত্ব সহকারে আচরণ করে, এটি আপনাকে নিশ্চিত করতে সহায়তা করতে পারে যে গুণটি অভিন্নভাবে প্রয়োগ করা হয়েছে। তবে না পারলে? এটি মানুষের ত্রুটি পর্যন্ত অনেকটা আপ।

2

এই পদ্ধতির সাথে সমস্যা হ'ল এটি অবিশ্বাস্যরূপে ত্রুটিযুক্ত প্রবণ।

যদি এটি নির্ভরযোগ্য না হয় তবে ট্যাগগুলি দরকারী তথ্য সরবরাহ করতে ব্যর্থ হবে এবং তাদের উপস্থিতি বা অনুপস্থিতি মাঝে মধ্যে মিথ্যা তথ্য জানাতে সফল হবে যা ক্ষতিকারক।

আপনি যদি এটির সাথে যাওয়ার সিদ্ধান্ত নেন তবে আপনাকে অবশ্যই মানব ত্রুটিটি মুছে ফেলতে হবে , যা করা খুব কঠিন নয়, তবে আপনি যদি আগে আগে এমন কিছু না করে থাকেন তবে 2 ঘন্টা ভাল কাজ লাগে। এখানে দুটি পন্থা রয়েছে - প্রতিটি নিজস্ব সুবিধা সহ - আপনি যে কোনও একটি ব্যবহার করতে পারেন:

  1. চেক ইন বা স্বয়ংক্রিয় বিল্ডে নন-কমপ্লায়িং কোডটি যাচাই বা বাতিল করুন।
  2. চেক ইন বা স্বয়ংক্রিয় বিল্ডে ট্যাগগুলি ঠিক করার জন্য কোডের স্বয়ংক্রিয় সম্পাদনা।

এটা কি মূল্য? হ্যাঁ. এটি আপনার সময় 2 ঘন্টা মূল্য? আপনার কল


1
আমি একটি পৃথক উত্তর গ্রহণ করেছি, তবে যে কেউ UsedImplicitlyএই উদ্দেশ্যে বৈশিষ্ট্যটি ব্যবহার করার বিষয়ে চিন্তাভাবনা করে তার জন্য মানুষের ত্রুটি অপসারণ সম্পর্কে একটি দুর্দান্ত বক্তব্য ।
সনি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.