অপ্রচলিত কোড ফেজ করার জন্য সেরা অনুশীলনগুলি কী কী?


9

আমার একটি অপ্রচলিত পদ্ধতিটি শেষ করার দরকার আছে। আমি [Obsolete]গুণাবলী সম্পর্কে অবগত । এটি করার জন্য কি মাইক্রোসফ্টের প্রস্তাবিত সেরা অনুশীলন গাইড রয়েছে?

আমার বর্তমান পরিকল্পনাটি এখানে:

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

বি। পুরানো পদ্ধতিটি অচল করে চিহ্নিত করুন।

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

ফলাফল:

[Obsolete("Please don't use this anymore because it does not implement IMyDbProvider.  Use XXX instead.")];
        /// <summary>
        /// 
        /// </summary>
        /// <param name="settingName"></param>
        /// <returns></returns>
        public static Dictionary<string, Setting> ReadSettings(string settingName)
        {
            return ReadSettings(settingName, SomeGeneralClass.ConnectionString);
        }

        public Dictionary<string, Setting> ReadSettings2(string settingName)
        {
            return ReadSettings(settingName);// IMyDbProvider.ConnectionString private member added to class.  Probably have to make this an instance method.
        }

উত্তর:


5

মাইক্রোসফ্ট বিকাশকারীদের বলার জন্য [অপ্রচলিত] বৈশিষ্ট্যটি ব্যবহার করে যে পদ্ধতি, সম্পত্তি বা শ্রেণি অবচিত হয়েছে এবং ভবিষ্যতে প্রকাশিত ক্ষেত্রে এটি পরিবর্তন করা (বা কিছুতেই সমর্থিত নয়) হতে পারে।

এটি আপনাকে আপনার API- র ব্যবহারকারীদের বৈশিষ্ট্যটি "চলে যাচ্ছে" এবং তাদের সফ্টওয়্যারের ভবিষ্যতে প্রকাশের ক্ষেত্রে এর উল্লেখগুলি সরাতে অবহিত করার জন্য কমপক্ষে একটি প্রকাশের চক্র দেয়।

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

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


মাইক্রোসফ্টের অনুশীলনটি হ'ল পরবর্তী বড় রিলিজে অবহেলিত জিনিস সরিয়ে ফেলা। বিপরীতে, জাভা কখনও অবহেলিত জিনিসগুলি সরায় না - তাই এটি আপনার উপর নির্ভর করে।
স্কট সি উইলসন

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

4

যেহেতু বাস্তবায়ন পরিবর্তিত হচ্ছে (পদ্ধতিটির স্বাক্ষর নয়), আমার ওভারলোড তৈরি করার পরিবর্তে পদ্ধতিটির নতুন নামকরণ করতে হবে।

আমি বুঝতে পারছি না। যদি বাস্তবায়ন পরিবর্তন হয় তবে স্বাক্ষর না হয় তবে আপনি কেন কখনও এই কাজ করবেন? "পুরানো" পদ্ধতিটি নতুন এবং উন্নত বাস্তবায়নটি ব্যবহার করুন। এই এপিআই ব্যবহারকারী যে কোনও বিকাশকারী যখন তাদের বিদ্যমান পদ্ধতি কলগুলিতে সঠিক একই স্বাক্ষর তৈরি এবং অবমূল্যায়নের সতর্কতা সহ কোনও পদ্ধতি দেখবেন তখন তারা তাদের চোখ ঘুরিয়ে দেবে। (আপনি কি এমন কোনও সময়ের কথা ভাবতে পারেন যে এটি কোনও এপিআইতে কখনও ঘটেছে?)

যদি আপনি নিশ্চিত না হন যে এই পদ্ধতির অন্তর্নিহিত বাস্তবায়ন পরিবর্তন কাজ করে, আপনি বাস্তবায়ন পরিবর্তন করার আগে এবং পরে ইউনিট পরীক্ষার সাথে আচরণ যাচাই করুন।


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

আমি পরীক্ষার কথা উল্লেখ করার কারণটি হ'ল আপনি স্পষ্টভাবে এটি করতে চেয়েছিলেন তাই আপনার এপিআই গ্রহণকারীরা পরীক্ষাটি করতে পারে এবং 2 কলের মধ্যে যে কোনও সমস্যা খুঁজে বের করতে সহায়তা করে। আপনার সর্বোত্তম বিকল্পটি মনে হচ্ছে আপনার কোডটি ব্যবহার করে বিকাশকারীদের আগুনে ফেলে দেওয়া এবং তাদেরকে নতুন বাস্তবায়ন কাজে লাগানো এবং আশা করা যায় তারা পুরোপুরি QA করেন বা তাদের নিজস্ব পরীক্ষা আছে।
ব্রায়ান

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

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