সি # তে ব্যক্তিগত স্ট্যাটিক পদ্ধতিগুলি কি কোনও ক্ষতি করে?


10

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


10
স্থির পদ্ধতিগুলির সাথে "জ্ঞাত সমস্যাগুলি" কী কী?
রবার্ট হার্ভে

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

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

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

1
@ ট্যামসজেলি কীভাবে তারা বিশ্বব্যাপী রাষ্ট্র পরিবর্তন করতে প্রবণ? আপনি এটি কোনও প্যারামিটারে পাস না করা পর্যন্ত তারা বিশ্বব্যাপী রাষ্ট্রের সন্ধান করতে পারে না।
কোডসইনচাউস

উত্তর:


16

আমি ভাবব: "আমার কি এটি পরীক্ষা করার দরকার আছে?"

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

সুতরাং, আমার মতে: না, একটি "ব্যক্তিগত" পদ্ধতিটিকে "ব্যক্তিগত স্ট্যাটিক" তৈরি করার ক্ষেত্রে দীর্ঘমেয়াদী কোনও পদক্ষেপ নেই।


17

আমার দৃষ্টিকোণ থেকে ব্যক্তিগত স্ট্যাটিক পদ্ধতিগুলি সবচেয়ে সহজতম জিনিস।

ডেটাআইন -> পদ্ধতি -> ডেটাআউট

বাহ্যিক বস্তুর উপর কোনও নির্ভরতা নেই, কোনও পার্শ্ব প্রতিক্রিয়া নেই। আপনি তাদের খারাপ বিবেচনা করবেন কেন?


ধন্যবাদ. আমি প্রশ্নের উদ্বেগের মধ্যে মন্তব্যগুলিতে আমার উদ্বেগগুলি ব্যাখ্যা করেছি।
তামেস সেজেলি

2
আপনি যা বর্ণনা করেছেন কেবল স্থির পদ্ধতির জন্য সঠিক যা স্থির সদস্যের ভেরিয়েবলের উপর নির্ভর করে না - এটিই "ভাল" এবং "খারাপ" স্থির পদ্ধতির মধ্যে পার্থক্য আনতে পারে।
ডক ব্রাউন

2

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

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

অন্যদিকে স্থিতিযুক্ত কিছু হ'ল একটি কোড গন্ধ। আসলে এটি কি "সহায়ক শ্রেণি"? প্যারামিটার হিসাবে পাস হওয়া ক্লাসগুলির একটিতে পদ্ধতিটি আরও কার্যকরভাবে থাকতে পারে এমনটি কি হতে পারে? এই প্রশ্নের উত্তর প্রায়শই "স্থিতিশীল হিসাবে এটি ঠিক" তবে এটি মনে রাখার মতো।


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