অতিরিক্ত ব্যবহার বা অপব্যবহার প্রোগ্রামিং কৌশল [বন্ধ]


38

প্রোগ্রামিংয়ে এমন কোন কৌশল রয়েছে যা আপনি অতিরিক্ত ব্যবহার করতে পেলেন (IE তাদের হওয়া উচিত তার চেয়ে বেশি মাত্রায় ব্যবহার করা হয়েছে) বা আপত্তিজনক ব্যবহার করা হয়েছে বা সমস্ত কিছুর জন্য কিছুটা ব্যবহার করা হয়েছে, যদিও লোকেদের চেষ্টা করা অনেক সমস্যার সত্যই সমাধান হতে পারে না এটি দিয়ে সমাধান করুন।

এটি নিয়মিত প্রকাশ, কোনও ধরণের ডিজাইনের ধরণ বা হতে পারে একটি অ্যালগরিদম বা সম্পূর্ণ আলাদা completely সম্ভবত আপনি ভাবেন যে লোকেরা একাধিক উত্তরাধিকার ইত্যাদি ব্যবহার করে abuse


33
আমি সম্মত হই যে আইই ব্যবহার করা উচিত তার চেয়ে বেশি মাত্রায় ব্যবহৃত হয় তবে এটি মূলত নন-প্রোগ্রামাররা। । ।
এরিক উইলসন

7
@ ফর্মবয় - আমি মনে করি তিনি আইই বোঝাতে চেয়েছিলেন: "আইই" এর অর্থ কেবল "অর্থাত", যা লাতিন ভাষায় সম্পূর্ণ লিখিত 'আইডি ইস্ট'।
রাফেল

এখন এটা ফিক্সড :)
Anto

4
যে কোনও কৌশল (এবং প্রায়শই অপব্যবহার করা যায়), এটি কেবলমাত্র পরবর্তী রূপালী বুলেট হিসাবে উপস্থাপন করতে হবে এবং আপনি এমন কাউকে খুঁজে পাবেন যিনি প্রতিটি সমস্যা পেরেক হিসাবে আচরণ করেন (রূপকগুলিকে মিশ্রিত করার জন্য)।
ক্রিসএফ

8
@ রাফিয়াল - আমি অবশ্যই মজা করছিলাম। শিক্ষার জন্য ধন্যবাদ।
এরিক উইলসন

উত্তর:


73

কোড মন্তব্য

আমি কেবল ইচ্ছে করেই বিশ্ববিদ্যালয়ের অধ্যাপকরা বুঝতে পারবেন যে তাদের ছাত্রদের 10 টি লাইনের মন্তব্য লিখতে শেখানোর দরকার নেই যে নীচের কোডটি লুপের জন্য 1, সংখ্যার x থেকে পুনরাবৃত্তি হবে। আমি কোডে দেখতে পাচ্ছি!

তাদের প্রথমে স্ব-ডকুমেন্টিং কোড লিখতে শেখান তারপর যথাযথভাবে স্ব-ডকুমেন্টিং দ্বিতীয়টি কী হতে পারে না সে সম্পর্কে উপযুক্ত মন্তব্য করুন ing সফ্টওয়্যার ওয়ার্ল্ড একটি ভাল জায়গা হবে।


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

24
@ Woot4Moo: আপনি যদি পড়েন তবে Clean Codeফোলার স্পষ্টভাবে বলেছে যে পুরানো ডকুমেন্টেশন কোনও ডকুমেন্টেশনের চেয়ে খারাপ, এবং সমস্ত মন্তব্যে বাসি হয়ে ওঠার এবং তাদের নথির কোড থেকে দূরে সরে যাওয়ার প্রবণতা রয়েছে। স্ব-ডকুমেন্টিং কোড কীভাবে লিখতে হয় সে সম্পর্কে পুরো বইটি is
স্কট হুইটলক

12
কোড দিয়ে মন্তব্যগুলি প্রতিস্থাপন করতে তাদের শেখানো একটি ভাল শুরু হবে ...
শোগ 9

15
+1 টি। আমি প্রকৃত বিশ্ব কোডে প্রকৃতপক্ষে নিম্নলিখিতটি দেখেছি: "লুপভার ++; // ইনক্রিমেন্ট লুপভার"। AAAAAAAAAAAAARRRRRGH!
ববি টেবিলগুলি

7
@ বিল: আমার এটি গ্রহণ করা হ'ল আপনার তুলনামূলক জটিল হলেও জেনেরিক যুক্তি এবং নিয়ন্ত্রণ কাঠামোগুলি নথিভুক্ত করা উচিত নয়। মূলত, ভাষাটি জানেন এমন কোনও ভাল বিকাশকারী কোডের বিশ্লেষণ করে কাজ করতে সক্ষম হওয়া উচিত এমন কোনও কিছুর মন্তব্য করার দরকার নেই। যেমন। লুপগুলির ভিতরে কিছু বিরতি সহ নেস্টের একটি সেট ইত্যাদি But "যদি কোনও নতুন প্রোগ্রামার আগামীকাল সংস্থায় শুরু হয়ে কোডটির দিকে তাকিয়ে থাকে তবে মন্তব্য ইঙ্গিত ছাড়াই এর অর্থ কী হবে?"
ববি টেবিলগুলি

57

সিঙ্গলটন ডিজাইনের প্যাটার্ন।

অবশ্যই, এটি একটি দরকারী প্যাটার্ন তবে প্রতিবারই নতুন প্রোগ্রামার এই প্যাটার্নটি সম্পর্কে জানলে তিনি তার তৈরি প্রতিটি ক্লাসে এটি প্রয়োগ করার চেষ্টা শুরু করেন।


আমি প্রতিদিন কোনও ফ্রেমওয়ার্কের জন্য এই নকশাকৃত ডিজাইনের অজুহাতটি ব্যবহার করি। কোডগাইনিটার / ইউজার_গাইড / লাইব্রিজি / ইমেল এইচটিটিএমএল তারা মনে করেন যে ওওপি এর সাথে ফাংশনগুলির উপসর্গ করছে $this->। পিএইচপি হ'ল একটি পচা ভাষা তাই আমি ফ্রেমওয়ার্কগুলি দুর্দান্ত হওয়ার আশা করতে পারি না।
কীও

7
আমি মনে করি যে কোনও প্রোগ্রামার যিনি সিঙ্গেলটন প্রয়োগ করেন এবং অনুতাপ করেন না সে তার (বা) পাপ করার জন্য জ্বলন্ত নরকে জ্বলবে।

2
আমি আমার পেশাগত জীবনে একবার একক সিঙ্গলটন প্রয়োগ করেছি (বহু বহুচর্চা প্রসঙ্গে) এবং আমার পাপের জন্য এটি আবার লিখে দিয়ে অনুতাপ করতে হয়েছিল।
Spoike

3
সিঙ্গলেটগুলি কয়েকটি জিনিসের জন্য কার্যকর হতে পারে তবে প্রায়শই সর্বদা ব্যবহৃত হয় যখন সেটি না হওয়া উচিত। এর অর্থ এই নয় যে সিলেটলেটগুলি কখনই ব্যবহার করা উচিত নয় - কারণ কোনও কিছুকে অপব্যবহার করা হয়েছে তার অর্থ এই নয় যে এটি সঠিকভাবে ব্যবহার করা যাবে না।
Configurator

2
@ রাপাহেল: ঠিক এই কারণেই আমি বিশ্বাস করি না যে নকশার ধরণগুলি অধ্যয়ন করা ভাল জিনিস।
Configurator

53

বোবা প্রোগ্রামিং রক্ষা করার জন্য সবচেয়ে খারাপ জিনিস। একটি চেষ্টাতে সবকিছু রাখা এবং ক্যাচ দিয়ে কিছুই না

        try
        {
            int total = 1;
            int avg = 0;
            var answer = total/avg;
        }
        catch (Exception)
        {

        }

আমি যখন কাঁপতে থাকি তখন এমন চেষ্টা দেখি যা কিছুই করে না এবং মূক যুক্তি হ্যান্ডেল করার জন্য তৈরি করা হয়েছে। সাধারণভাবে ট্র্যাচ ক্যাচগুলি বেশি ব্যবহৃত হয় তবে কিছু ক্ষেত্রে এটি খুব কার্যকর।


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

5
@ আপনার বর্ণিত কেসটি হ'ল একটি বিরল প্রান্ত শর্ত। আর একটি যা আমি ভাবতে পারি তা হল লগিং কোড - যদি লগিং নিজেই ব্যর্থ হয় তবে ব্যতিক্রমটি লগ করার চেষ্টা করার বা অ্যাপ্লিকেশনটিতে বাধা দেওয়ার কোনও লাভ নেই।
dbkk

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

5
ত্রুটি পুনরায়
শুরুতে

2
@ jk01 - একটি ব্যতিক্রম (অগত্যা) ত্রুটি নয়। কোনও শর্ত ত্রুটি কিনা তা প্রসঙ্গে নির্ভর করে। উদাহরণস্বরূপ, আপনার যদি ফাইলের প্রয়োজন না হয় তবে "ফাইল পাওয়া যায় না" কোনও ত্রুটি নয়। সম্ভবত এটি কেবলমাত্র একটি settingsচ্ছিক সেটিংস ফাইল যা উপস্থিত থাকতে পারে বা নাও থাকতে পারে এবং যদি ফাইলটি না থাকে তবে আপনি কেবল নিজের ডিফল্টগুলি জায়গায় রেখে দিতে পারেন (সুতরাং ধরার পরে কোনও সংশোধনমূলক পদক্ষেপের প্রয়োজন নেই)।
স্টিভ 314

47

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

নতুন প্রোগ্রামাররা যা চিন্তাভাবনা করার এবং স্টাট আউট করার চেষ্টা করার আগে এসও (খুব প্রায়ই) পোস্টে জ্ঞানের ধন সন্ধান করে।

আমার দিনগুলিতে আমাদের বই, কোড, ইন্টারনেট, এসও নেই। এখন আমার লন নামবো।


28
আমাকে অবশ্যই স্বীকার করতে হবে, আমি এসও-তে কিছু প্রশ্নের অস্পষ্টতা দেখেছি। হয় কারণ তাদের প্রতিদিন অনেকবার জিজ্ঞাসা করা হয় এবং তারা অবশ্যই অনুসন্ধান করেনি; বা আরও খারাপ, তারা সম্প্রদায়কে একটি বিনামূল্যে আউটসোর্সিং পরিষেবা হিসাবে বিবেচনা করে।
12'11 এয়ার্বলিং

2
@dbkk: stackoverflow.com/questions/4665778/... -> প্রথম মন্তব্য "আপনি কি কখনো এই চেষ্টা করেছিলেন?"
ম্যাথিউ এম।

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

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

3
সমস্যাটি হ'ল খুব সহজ প্রশ্ন জিজ্ঞাসা / উত্তর দেওয়ার জন্য সরল গুগল অনুসন্ধানের মাধ্যমে উত্তর দেওয়া যেতে পারে বলে প্রচুর জবাব দেওয়ার মাধ্যমে এসও এটি উত্সাহিত করে। খুব কঠিন প্রশ্নের লোকেরা কেবল উত্তর দেয় কারণ তারা সত্যই চায়।
আইএডাপ্টার

36

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

আরেকটি বিষয় হ'ল (যেমন পার্ল) ওওপি প্রায়শই একই জিনিসটি প্রায় অন্যভাবে লেখার জন্য নেমে আসে: এর result = $object ->function(pars)পরিবর্তে result = function(object, pars)এটি কখনও কখনও অর্থবোধ করে তবে প্রসেসরিয়াল প্রোগ্রামিংয়ের সাথে মিশ্রিত হলে এটি কোডটি পড়া বেশ বিভ্রান্ত করতে পারে। এবং এটি বাদ দিয়ে, আপনি কেবল আরও ওভারহেড প্রবর্তন করুন যেখানে এটি ডিজাইনের উন্নতি করে না। এটি সিঙ্গেলটন প্যাটার্ন সম্পর্কে যা বলা হয়েছে তাতে নেমে আসে: ব্যবহার করা উচিত, তবে সমস্ত কিছুর উপর নয়।

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


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

1
@ ক্রেইগ: শৃঙ্খলাবদ্ধ পদ্ধতি (যেমন Foo.DoX().DoY().DoZ()) দুর্দান্ত, তবে, তবে অবশ্যই কোনও কিছু করার একমাত্র উপায় নয়। ফাংশন রচনা (যেমন doZ . doY . doX $ fooএকটি পুরোপুরি বৈধ বিকল্প।
Anon।

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

1
@ কনরাড: এটি নির্ভর করে। বায়োপার্লের কাছে সমস্ত ভাষা থেকে বায়োইনফরমেশনবিদদের পক্ষে সবচেয়ে বেশি প্যাকেজ রয়েছে (আমি পাইথন ধরছি যদিও)। এছাড়াও, পার্লে প্রচুর কাজ করা হয়েছে এবং সি ++ এর মধ্যে সমস্ত কিছু পুনর্লিখনের চেয়ে একটি স্ক্রিপ্ট মানিয়ে নেওয়া আরও সহজ। শেষ অবধি, কোনও স্ক্রিপ্ট কখন করবে এটি সম্পূর্ণ অ্যাপ্লিকেশন লিখতে দেয় না serve অনুমান যে কেন পার্ল এখনও এতটা প্রায় রয়েছেন। এবং সত্যই, আমি কিছু মনে করি না, আমি ভাষা পছন্দ করি। স্ট্রিং এবং ফাইল কাজের জন্য এটি এখনও আমার সেরা। গণনাগুলি স্পষ্টতই অন্যান্য ভাষায় করা হয় এবং ফিরে লিঙ্ক করা হয় (যা বেশ সহজ হয়ে যায়)।
জোরিস মাইস

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

27

এএসপি.নেট ওয়েবফোমে বেশ কয়েক বছর অতিবাহিত করার পরে, আমাকে স্পষ্টতই বলতে চাই:

স্মার্ট UI

ওয়েবফোমে লেয়ার্ডড, টেস্টেবল অ্যাপ্লিকেশন তৈরি করা সম্পূর্ণভাবে সম্ভব হলেও, ভিজুয়াল স্টুডিওটি ডেভেলপারদের তাদের ডেটা-উত্সের সাথে দৃ tight়ভাবে আবদ্ধ হওয়ার জন্য তাদের পদ্ধতিতে এক-ক্লিক করা খুব সহজ করে তোলে, সমস্ত ইউআই কোডের চারপাশে অ্যাপ্লিকেশন যুক্তি ছড়িয়ে পড়ে।

স্টিভ স্যান্ডারসন এই প্রো-এএসপি.নেট এমভিসি বইটিতে আমার চেয়ে আরও ভাল এই অ্যান্টি-প্যাটার্নটি ব্যাখ্যা করেছেন:

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


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

4
@ কিউপিআর, আমি সে সম্পর্কে জানি না। যদি তাদের কাছে একটি ফাঁকা পাঠ্য ফাইল থাকে তবে তারা কিছু করতে সক্ষম নাও হতে পারে (যা কেবল একটি বোনাস হতে পারে)।
কেন হেন্ডারসন

ডাব্লুপিএফ ব্যবহারের অনেক সুবিধাগুলির মধ্যে একটি হ'ল এমভিভিএম বাস্তবায়ন এই অ্যান্টি-প্যাটার্নটিকে স্মিথেরিনে টুকরো টুকরো করে।
রবার্ট রসনি

2
এই হাজার বার। এমনকি আমি অভিজ্ঞ। নেট বিকাশকারীরা এই "প্যাটার্ন" এর উপর নির্ভর করে দেখতে পাচ্ছি কারণ উদ্বেগের বিচ্ছেদ সম্পর্কে বোঝা বা যত্ন নেওয়ার চেয়ে সহজ। এমনকি যদি তারা ড্রাগ-অ্যান্ড-ড্রপ উইজার্ডগুলি ব্যবহার না করে তবে .NET ওয়েব ফর্মস বিকাশের মধ্যে সর্বাধিক সাধারণ "প্যাটার্ন" হ'ল কোড-পেছনের ইভেন্টগুলিতে সবকিছু করা এবং প্রয়োজন অনুসারে কপি / পেস্ট কোড করা।
ওয়েন মোলিনা

23

আমি এটি মাঝে মাঝে দেখি এবং এটি সাধারণত বুলিয়ান এক্সপ্রেশনগুলি পুরোপুরি না বোঝার ফলে আসে।

if (someCondition == true)

16
কোডটি আরও সুস্পষ্ট করে তোলার সুবিধা রয়েছে
পেমদাস

7
আমি মনে করি এই প্রশ্নের এক
নজরে

5
আমি এটি করি না তবে, গুরুত্ব সহকারে, এটি শেষ। সেখানে অনেক খারাপ একটি জাহান্নাম আছে। :)
মেটালমিকেস্টার

4
যদি আপনি আপনার ভেরিয়েবলগুলি সঠিকভাবে নামকরণ করেন, উদাহরণস্বরূপ boolশুরু হয় isবা এর সাথে hasআপনার কোডটি আরও সুস্পষ্ট করার প্রয়োজন হয় না = true
কেউই নয়

3
@ ডিসগ্রান্টলড গোট কারণ এটি কোনওভাবেই ব্যবহার করা উচিত নয়
কোরি

19

কোর (বা অন্যথায় সরবরাহিত) কার্যকারিতা পুনরায় বাস্তবায়ন করা হয়, এর অস্তিত্বের অজ্ঞতার কারণে বা কাস্টমাইজেশনের জন্য বোধিত প্রয়োজনের কারণে।


2
পড়াশুনা ব্যতিক্রম। যে কোনও কিছু অধ্যয়ন করার সময়, "চাকা পুনরায় উদ্ভাবন করা" প্রায়শই উপকারী।
ম্যাক্সপাম

নিশ্চিতভাবে - আমার উল্লেখ করা উচিত ছিল কেবলমাত্র উত্পাদন সফ্টওয়্যার তৈরি করার সময় এটি প্রাসঙ্গিক।
l0b0

1
সুরক্ষা সম্পর্কিত যে কোনও কিছু প্রয়োগ করার সময় এটি বিশেষত খারাপ। ভাল সুরক্ষা সফ্টওয়্যার এমন আক্রমণগুলি প্রতিরোধ করে যা বেশিরভাগ মানুষ কখনও ভাবেন না।
ডেভিড থর্নলি

আমি এই উপায় খুব সাধারণ দেখতে। আমাদের এক্স দরকার, আমাদের নিজস্ব লিখি! তবে ওপেন-সোর্স প্যাকেজ ওয়াইয়ের কী হবে? না, আমাদের সুপার-সিক্রেট ট্রেড সিক্রেটগুলির জন্য আমাদের কাস্টম সফ্টওয়্যার দরকার যা আমাদের শিল্পের সবার মতো, আমরা সাধারণ জঞ্জাল সফটওয়্যার ব্যবহার করতে পারি না!
ওয়েন মোলিনা

18

উত্তরাধিকার।

বাস্তবায়ন করবেন না এমন-যেখানে এটি কার্যকর হয় না।


6
সমস্যাটি হ'ল স্বজ্ঞাতভাবে "is-a" প্রায়শই বুদ্ধিমান হওয়ার জন্য উপস্থিত হয় (বিশেষত যেহেতু প্রতিটি বাস্তবায়ন / চুক্তির সম্পর্ক কথোপকথনে "is-a" হিসাবে প্রকাশ করা যেতে পারে)। এটি আসলে একটি ভুল, এবং উত্তরাধিকার এবং ইন্টারফেস বাস্তবায়ন মৌলিকভাবে পৃথক রয়েছে তা বুঝতে এটির ওওপি-র একটি দৃ understanding় বোঝার প্রয়োজন।
কনরাড রুডল্ফ

@ কনরাড - একমত আমি লোককে রচনা দিয়ে শুরু করতে, ইন্টারফেসে এগিয়ে যেতে এবং উত্তরাধিকারকে শেষ বলে বিবেচনা করার চেষ্টা করি । (অবশ্যই থাম্বের নিয়ম হিসাবে)। তবে এটি আমার ভিবি ব্যাকগ্রাউন্ডের কথা বলছে ... ;-)
মাইক উডহাউস

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

14

অফ-শেল্ফ সফ্টওয়্যারটি কাস্টমাইজ করা।

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


এটি কি কাস্টম অ্যাপ্লিকেশনটির ক্ষেত্রে হওয়ার সম্ভাবনা বেশি নয়?
জেফো

13

ডিবাগার হিসাবে কম্পাইলার ব্যবহার করা।

কমপ্লায়ার সতর্কবাণী উপেক্ষা করা বা সেগুলি সম্পূর্ণভাবে বন্ধ করে দেওয়া।

গ্লোবাল ভেরিয়েবল।


18
"একটি ডিবাগার হিসাবে সংকলক ব্যবহার করে" তাতে কী সমস্যা? একটি সংকলক রয়েছে যা রান কোডে কোনও সমস্যা হওয়ার আগে আপনার কোডটিতে ত্রুটিগুলি চিহ্নিত করতে সক্ষম। একটি দুর্দান্ত সুবিধা।
ম্যাসন হুইলার

3
আমি আমার সিনট্যাক্স ত্রুটিগুলি এবং ভুল টাইপ-মিলের ভুলগুলি ধরা সংকলকটির উপর নির্ভর করি। আচরণগত ত্রুটির জন্য, আমি পরীক্ষার ক্ষেত্রে নির্ভর করি।
গ্যাবলিন

5
সমস্যাটি যখন আপনি প্রোগ্রামের নির্ভুলতা নিশ্চিত করতে সংকলকের উপর নির্ভর করতে শুরু করেন। এই সংকলন করেছেন? না, আমাকে এই ছোট্ট অংশটি ডুবিয়ে দিন এবং দেখুন এটি ঠিক করে দিয়েছে কিনা। এটি সংকলন করেছেন? না, আমাকে এখানে এবং সেখানে একটি যুক্ত করতে দিন এবং সংকলনগুলি দেখুন কিনা। ... ect,। স্পষ্টতই, এটি
টাইপোগুলি

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

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

11

সমস্ত নকশা প্যাটার্নস।

এগুলি নুন বা চিনির মতো। আপনার খাবারের কিছু তাদের এটিকে দুর্দান্ত করে তোলে, তাদের মধ্যে অনেকগুলি আপনার খাবারকে স্তন্যপান করে।

আমাকে ভুল করবেন না ডিজাইনের ধরণগুলি দুর্দান্ত কৌশল techniques আমি তাদের অনেক ব্যবহার করেছি। তবে কখনও কখনও, আমি প্রোগ্রামারগুলি খুঁজে পাই, (তাদের মধ্যে কয়েকজন আমার প্রাক্তন মনিব), যাদের এই "আপনার একটি ডিজাইনের ধরণ ব্যবহার করতে হবে", এমনকি সমস্যাটির সাথে মেলে না কেন !!!

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

আমি আশা করি এটি "ডিজাইনের প্যাটার্নস" বইয়ের একটি নতুন সংস্করণে বিদ্যমান প্যাটার্নগুলিতে নতুন প্যাটার্ন হিসাবে যুক্ত হয়েছে।


3
আমি কখনও ডিজাইনের ধরণগুলি ব্যবহার করি না, যদিও সেগুলি কখনও কখনও আমার কোডে প্রাকৃতিকভাবে উত্থিত হয়।
কনফিগারকারী

কথা কিভাবে যেতে পারে? আপনি সেগুলি ব্যবহার করছেন তা না জেনে আপনি নিদর্শনগুলি ব্যবহার শুরু করেন, তারপরে আপনি সেগুলি সম্পর্কে শিখুন এবং সেগুলি সর্বত্র ব্যবহার করুন, তবে তারা দ্বিতীয় প্রকৃতিতে পরিণত হয় যাতে আপনি তাদের ব্যবহার করছেন না জেনে আপনি সেগুলি ব্যবহার শুরু করেন?
ওয়েইন মোলিনা

2
@ কনফিগ্রেটর যখন আমি ডিজাইনের ধরণগুলি সম্পর্কে পড়ি; আমি এবং আমি যে অন্যদের বিকাশকারীরা ইতিমধ্যে তাদের কয়েকটি ব্যবহার করেছি তা আবিষ্কার করেছি ;-)
ইউএমএলসিট

9

প্রবাহ নিয়ন্ত্রণ হিসাবে ব্যতিক্রম ব্যবহার করে। এই উত্তরের সাথে মিল অনুসারে বাছাই করুন , তবে আলাদা।

ব্যতিক্রম গিলে ফেলা খারাপ ফর্ম কারণ এটি রহস্যজনক, কোডগুলিতে বাগ খুঁজে পাওয়া শক্ত hard অন্যদিকে ফ্লো নিয়ন্ত্রণ হিসাবে ব্যতিক্রমগুলি ব্যবহার করা খারাপ, কারণ এটি কোডটিকে তার চেয়ে অনেক বেশি অকার্যকর করে তোলে এবং ধারণাগতভাবে ম্লান।

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


অদক্ষ কোডের জন্য ব্যতিক্রমগুলি আপনার ভাষার উপর নির্ভর করে - একটি স্ট্যাক ফ্রেম তৈরি করা ইত্যাদি S সেকিয়াক এ, আপনার স্ট্যাকের সম্পূর্ণ পুনঃসংশ্লিষ্ট, সুতরাং ব্যতিক্রমগুলি ব্যবহার করার বা না করার মধ্যে কোনও পার্থক্য নেই। (অন্য কথায়, ব্যতিক্রমগুলি লাইব্রেরির অংশ, ভাষা নয়)) তবে এটি ব্যতিক্রম-নিয়ন্ত্রিত নিয়ন্ত্রণ প্রবাহের সাথে বিভ্রান্ত করছে: lshift.net/blog/2011/01/04/ry-again-with- ব্যতিক্রমগুলি শো একটি লুপ ব্যবহার করে-ব্যতিক্রম যা আমি সম্প্রতি খুঁজে পেয়েছি।
ফ্র্যাঙ্ক শিয়েরার

শেষ অনুচ্ছেদের বিষয়ে, আবারও এটি আপনার ভাষার উপর নির্ভর করে। কমন লিস্পে ব্যতিক্রম ("শর্তাবলী") ব্যতিক্রমগুলির বেশিরভাগ ভাষার ধারণার একটি কঠোর সুপারসেট। এখানে উদাহরণগুলি দেখুন: গিগামনকাইস / বই / ৮ সব কিছুর মতো, আপনি খুব বেশি দূরে যেতে পারেন!
ফ্র্যাঙ্ক শিয়েরার

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

7

আমি অতিরিক্ত তথ্য গোপনের মাধ্যমে অবিচ্ছিন্নতার সাথে যাচ্ছি।

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

সমস্যাটি হ'ল, প্রতিটি প্রসঙ্গে প্রাসঙ্গিক সমস্যার জন্য-সঠিক-ভারসাম্য-খুঁজে পাওয়ার মতো অভিজ্ঞতাও লাগে takes


7

অভ্যন্তরীণ অ্যারে এক্সপোজ করা

    public class Data {
    int[] x;

    public void setArray(int[] x) {

        this.x = x;
    }

    public int[] getArray() {

        return x;
    }
}

Http://www.oracle.com/technetwork/java/seccodeguide-139067.html অনুসারে

প্রত্যাবর্তন করার আগে পরিবর্তনযোগ্য বস্তুগুলি অনুলিপি করুন, যদি না রাষ্ট্রটি ভাগ করে নেওয়ার উদ্দেশ্য থাকে।


6

পরিবর্তনীয় স্থিতি এবং লুপগুলি। আপনার প্রায়শই তাদের প্রয়োজন হয় না এবং আপনি প্রায় সর্বদা এগুলি ছাড়া আরও ভাল কোড পান।

উদাহরণস্বরূপ, এটি সরাসরি স্ট্যাকওভারফ্লো থ্রেড থেকে নেওয়া হয়েছে:

// ECMAScript
var thing, things_by_type = {};
for (var i = 0; i < things.length; i++) {
    thing = things[i];
    if(things_by_type[thing.type]) {
        things_by_type[thing.type].push(thing);
    } else {
        things_by_type[thing.type] = [thing];
    }
}

# Ruby
things_by_type = {}
things.each do |thing|
  (things_by_type[thing.type] ||= []) << thing
end

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

// ECMAScript
things.reduce(function (acc, thing) {
    (acc[thing.type] || (acc[thing.type] = [])).push(thing);
    return acc;
}, {});

# Ruby
things.group_by(&:type)

// Scala
things groupBy(_.type)

// C#
from thing in things group thing by thing.Type // or
things.GroupBy(thing => thing.Type);

এখানে কোনও লুপ নেই, এবং কোনও পরিবর্তনযোগ্য অবস্থা নেই। ঠিক আছে, ঠিক আছে, কোনও স্পষ্ট লুপ নেই এবং কোনও লুপ কাউন্টার নেই।

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


আমি বিশ্বাস করি যে আপনার "স্থির" ECMAScript এর দ্বিতীয় লাইনে twice (acc[thing.type] || (acc[thing.type] = []))= [জিনিস] , unless you want to add জিনিস` এর বিপরীতে দুটিবার পড়তে হবে ... বা আমি কিছু মিস করছি?
অস্টিন হাইড

@ অস্টিন হাইড: ঠিক বলেছেন।
জার্গ ডব্লু মিত্তাগ

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

6

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


তত্ত্বে সম্মত; ঠাট্টা উপযোগী কিন্তু আপনি না আছে তাদের আছে।
ওয়েইন মোলিনা

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

3

সারা বিশ্বে ডেল্ফি প্রোগ্রামাররা গত দুই বছর ধরে খুঁজে পেয়েছেন যে ইউনিকোড পুরোপুরি রূপান্তরিত হওয়ার কারণে বাইট সংরক্ষণ করতে অক্ষরের অ্যারে ব্যবহার করা কতটা খারাপ over

এবং, "শীঘ্রই" আমরা শিখব তালিকার মধ্যে পূর্ণসংখ্যা সংরক্ষণ করা কতটা খারাপ, যখন আমরা 64-বিটগুলিতে পরিবর্তন করতে চাই


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

2

বৈশিষ্ট্য। আমি জানি এটি বিতর্কিত, তবে আমি অনুভব করি যে নেটগুলিতে সম্পত্তিগুলি যথেষ্ট পরিমাণে ব্যবহার করা হয়েছে।

এই দুটি লাইনের মধ্যে পার্থক্য কী?

public string Property { get; set; }

public string Field;

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


1
একমত; যদি আপনি ১০০% জানেন তবে আপনাকে "সম্পত্তি" পাওয়ার / সেট করার সাথে কখনই কিছু করার দরকার পড়বে না তবে সম্পত্তি থাকার কোনও কারণ নেই। যাইহোক, যদি কোনও সুযোগ থাকে তবে আপনাকে কিছু করতে হবে (উদাহরণস্বরূপ একটি মান পরিবর্তন করা হয়েছিল যে লগ ইন করুন) তবে আপনার কোনও সম্পত্তি ব্যবহার করা উচিত। ব্যক্তিগতভাবে আমি একটি বড় যথেষ্ট পার্থক্য দেখতে না না সম্পত্তি ব্যবহার করেন, শুধু যদি আপনি না (আমি জানি, আমি জানি পরে এটি পরিবর্তন করার প্রয়োজনীয়তা YAGNIকিন্তু আমি এই ক্ষেত্রে বিচ্যুত বোধ খরচ কিছু না)
ওয়েন মোলিনা

2
@Wayne: কিভাবে পরিবর্তন করা হয় ;থেকে { get { ... } set { ... } }পরিবর্তন ছাড়া আরো কাজ { get; set; }করার জন্য { get { ... } set { ... } }?
Configurator

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