কোথাও কোথাও ডেটা চেক প্রবর্তনের জন্য ভাল কোড স্টাইল?


10

আমার এমন একটি প্রকল্প রয়েছে যা আকারে যথেষ্ট বড় যে আমি প্রতিটি দিক আর আমার মাথায় রাখতে পারি না। আমি এতে অনেকগুলি ক্লাস এবং ফাংশন নিয়ে কাজ করছি এবং আমি প্রায় ডেটা পাস করছি।

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

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

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

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

(এফওয়াইআই: আমি এখনও একটি শিক্ষানবিস, সুতরাং দয়া করে যদি এই প্রশ্নটি নিষ্কলুষ ছিল তবে ক্ষমা করবেন; আমার প্রকল্পটি পাইথনে রয়েছে in)



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

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

3
এই সমস্যাটি লোকেরা প্রায়শই দুর্বলভাবে টাইপ করা ভাষা ব্যবহার করে। আপনি যদি না চান বা আরও কঠোরভাবে টাইপ করা ভাষায় স্যুইচ করতে পারেন তবে উত্তরটি হ'ল "হ্যাঁ, এই সমস্যা সমাধানের জন্য এই কোড শৈলী উপযুক্ত" । পরের প্রশ্ন?
ডক ব্রাউন

1
কঠোরভাবে টাইপ করা ভাষায়, সঠিক ডেটা সংজ্ঞায়িত সংকলন সহ, সংকলকটি আপনার জন্য এটি করত।
এসডি

উত্তর:


4

পাইথন ভাষার বৈশিষ্ট্য এবং সরঞ্জামদানের আরও বেশি সুবিধা নেওয়া আরও ভাল সমাধান।

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

এই সমস্যাটি একটি দ্বারা প্রশমিত করা হয় namedtuple। এটি হালকা ওজনের এবং আপনার অ্যারের সদস্যদের কাছে সহজ অর্থবোধক অর্থ দেয়।

ভাষা পরিবর্তন না করে কিছু স্বয়ংক্রিয় প্রকারের চেকিংয়ের সুবিধা গ্রহণ করতে, আপনি টাইপ হিন্টিংয়ের সুবিধা নিতে পারেন । একটি ভাল আইডিই এটি ব্যবহার করতে পারে যখন আপনি বোবা কিছু করেন you

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

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


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

9

ঠিক আছে, আসল সমস্যাটি এই উত্তরের নীচে একটি মন্তব্যে বর্ণিত হয়েছে:

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

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

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


কখনও কখনও তম সমস্যাটি আরও সূক্ষ্ম হয়: আমি সঠিক ধরণটি পার করছি, তবে আমার ইনপুটটির "অভ্যন্তরীণ কাঠামো" ফাংশনটি মিস করে: উদাহরণস্বরূপ, ফাংশন 1 এ, প্রত্যাশিত ইনপুটটি স্ট্রিংগুলির একটি অ্যারে, যেখানে প্রথম স্ট্রিং কোনও কিছুর শিরোনাম এবং দ্বিতীয়টি একটি গ্রন্থাগারিক উল্লেখ den ফাংশন 2 এ প্রত্যাশিত ইনপুটটি এখনও স্ট্রিংগুলির একটি অ্যারে রয়েছে, তবে এখন স্ট্রিংগুলির ভূমিকাগুলি বিপরীত: প্রথম স্ট্রিংটি গ্রন্থপঞ্জি রেফারেন্স হওয়া উচিত এবং দ্বিতীয়টি গ্রন্থপঞ্জি রেফারেন্স হওয়া উচিত। আমার মনে হয় এই চেকগুলি উপযুক্ত কিনা?
ব্যবহারকারী 7088941

1
@ ব্যবহারকারী 7088941: আপনি যে সমস্যাটি বর্ণনা করেছেন তা দুটি ক্ষেত্রের সাথে ক্লাস করে সহজেই সমাধান করা যেতে পারে: "শিরোনাম" এবং "গ্রন্থপঞ্জি_পরিচয়"। আপনি যে মিশ্রিত হবে না। স্ট্রিংয়ের তালিকায় অর্ডারের উপর নির্ভর করা খুব ত্রুটিযুক্ত বলে মনে হচ্ছে। এটা কি অন্তর্নিহিত সমস্যা?
জ্যাকবিবি

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

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

2
আমি এখন এটা পেয়েছিলাম. সমস্ত সুন্দর অন্তর্দৃষ্টি এবং মন্তব্যগুলির জন্য +1। এবং তাদের অবিশ্বাস্য সহায়ক মন্তব্যের জন্য সবাইকে ধন্যবাদ! (আমি যখন কিছু শ্রেণি / অবজেক্ট ব্যবহার করছিলাম তখন আমি তাদের উল্লিখিত তালিকার সাথে ছেদ করেছিলাম, যা এখন দেখছি, ভাল ধারণা ছিল না। প্রশ্নটি কীভাবে কার্যকর করা যায়, যেখানে আমি জেইটিএম-এর উত্তর থেকে কংক্রিট পরামর্শ ব্যবহার করেছি) , যা বাগ-মুক্ত রাষ্ট্র অর্জনের গতির ক্ষেত্রে সত্যই আমূল পার্থক্য করেছিল))
ব্যবহারকারী 7088941

3

প্রথমত, আপনি এখন যা अनुभव করছেন তা হ'ল কোড গন্ধ - আপনাকে কী গন্ধ সম্পর্কে সচেতন হতে হবে তা মনে করার চেষ্টা করুন এবং আপনার "মানসিক" নাককে সম্মোহিত করার চেষ্টা করুন, যত তাড়াতাড়ি আপনি কোনও কোড দেখেন তত তাড়াতাড়ি গন্ধ হয় - এবং সহজ - আপনি অন্তর্নিহিত সমস্যা ঠিক করতে সক্ষম।

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

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

(বা, কোনও কোনও ক্ষেত্রে, ডেটাটি আবার ভুল আকারে দেওয়া হয়েছে) ast

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

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

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

অবশেষে আপনার প্রশ্নের উত্তর দেওয়ার জন্য: হ্যাঁ, রক্ষণাত্মক প্রোগ্রামিং (যেমন প্রদত্ত প্যারামিটারগুলির বৈধতা যাচাই করা) - একটি স্বাস্থ্যকর ডিগ্রিতে - একটি ভাল কৌশল। তাই বলা হয় , যেমন আপনি নিজেকে বললেন, আপনার কোড inconsitent, এবং আমি চাই জোরালোভাবে reccommend আপনি যে অংশ refactor করতে কিছু সময় ব্যয় গন্ধ - আপনি বলেন আপনি পরিষ্কার কোড সব সময় সম্বন্ধে আরো সময় খরচ সম্পর্কে চিন্তা করতে চাই না নতুন বৈশিষ্ট্যগুলির তুলনায় "পরিষ্কার" ... আপনি যদি আপনার কোডটি পরিষ্কার না রাখেন তবে আপনি স্কোয়াশিং বাগগুলিতে ক্লিন কোড না রাখার থেকে "সাশ্রয়" করতে দ্বিগুণ সময় ব্যয় করতে পারেন এবং নতুন বৈশিষ্ট্যগুলি কার্যকর করতে অসুবিধা হতে পারে - প্রযুক্তিগত debtণ পারে তোমাকে চূর্ণ কর


1

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

"কতটা চেক করবেন" আপনার কোড দক্ষতার উপর নির্ভর করে বাছাই করা প্রকল্প / ভাষার উপর নির্ভর করে।


1
আমার ধারণা, এটি চেষ্টা ছিল ... ক্যাচ ... ইগনোর। ওপি যা বলছে তার বিপরীতটি সম্পর্কে আপনি করেছেন। আইএমএইচএও তাদের বক্তব্যটি অসঙ্গতি এড়িয়ে চলেছে যখন আপনি নিশ্চিত করছেন যে কোনওটি যখন আঘাত করার সময় প্রোগ্রামটি ফুলে ওঠে না।
মার্টিনাস

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

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

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

1
@ user7088941 এটি ওও নয়, তবে "দ্রুত ব্যর্থ" নিয়ম রয়েছে। প্রতিটি বেসরকারী পদ্ধতিতে তার আর্গুমেন্টগুলি পরীক্ষা করতে হয় এবং যখন কোনও কিছু ভুল হয় তখন ফেলে দিতে হয়। কোনও চেষ্টা-ধরা, এটি ঠিক করার কোনও চেষ্টা নেই, কেবল এটি আকাশে উড়িয়ে দিন। অবশ্যই, কিছু উচ্চ স্তরে ব্যতিক্রম লগ এবং পরিচালনা করা হবে get আপনার পরীক্ষাগুলি যেমন আগেই বেশিরভাগ সমস্যার সন্ধান করে এবং কোনও সমস্যা লুকিয়ে না যায়, ত্রুটি-সহনশীল হওয়ার চেয়ে কোডটি একটি বাগ-মুক্ত সমাধানে আরও দ্রুত রূপান্তরিত করে।
মার্টিনাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.