অবহেলা জোর দিন


13

আমি কেবল বেশিরভাগ দীর্ঘ সম্পত্তির নাম সহ একটি বিবৃতি লিখছিলাম এবং এই সমস্যাটি দেখা দিয়েছিল।

ধরা যাক আমাদের মত একটি বিবৃতি আছে:

if(_someViewModelNameThatIsLong.AnotherPropertyINeedToCheck == someValue &&
   !_someViewModelNameThatIsLong.ThisIsABooleanPropertyThatIsImportant)
{
    //Do something
}

দ্বিতীয় সম্পত্তিটি একটি বুলিয়ান ধরণের এবং এটি স্টেমেণ্টটি পছন্দ করে তা বোঝা যায় না

if(boleanValue == true)

প্রত্যাখ্যানকে জোর দেওয়ার মতো আরও ভাল উপায় কি এরপরে !সামনে রাখা উচিত? আমার কাছে মনে হচ্ছে কোডটি পড়ার সময় এটি সহজেই তদারকি করা যেতে পারে এবং ডিবাগিংয়ের ক্ষেত্রে সম্ভাব্য সমস্যা দেখা দিতে পারে


7
অর্থবহ নাম সহ কোনও পদ্ধতিতে শর্তটি বের করুন।
জোছিম সাউর

2
... বা একটি অর্থবহ নামের সাথে একটি পরিবর্তনশীলকে অবহেলিত মান নির্ধারণ করুন এবং পরিবর্তে যদি এটি অবস্থাতে ব্যবহার করুন।
scrwtp

@ জোয়াচিমসৌয়ার কী বলেছিলেন +1, যদি সম্ভব হয় তবে সেই পদ্ধতিটি জিজ্ঞাসা করা বস্তুটির উপরে রাখুন .. এই ক্ষেত্রে পুরো শর্তটি কোনও পদ্ধতিতে আবৃত হতে পারে_someViewModelNameThatIsLong
ম্যাটড্যাভি

2
একটি সাধারণ জিনিস যা আমি প্রায়শই করি তা হ'ল প্রত্যাখাকে চারপাশের একটি স্থান দিয়ে ঘিরে এটি আরও দৃশ্যমান করা। if( ! something)বনামif(!something)
Svish

আপনি যদি অবহেলার উপর জোর দিচ্ছেন তবে কেন ব্যবহার ... && model.Prop == false)করবেন না ? ব্যক্তিগতভাবে আমি খুব কমই ব্যবহার করি !, এটি উপেক্ষা করা খুব সহজ।

উত্তর:


22
if(_someViewModelNameThatIsLong.NeedsMeToDoSomething(someValue))
{
    //Do something
}

এবং তারপরে, ভিউ মডেল অবজেক্টে

public bool NeedsMeToDoSomething(string someValue)
{
    return AnotherPropertyINeedToCheck == someValue &&
        !ThisIsABooleanPropertyThatIsImportant;
}

(ধরে নিলাম কিছুটা মূল্য একটি স্ট্রিং এবং মডেল অবজেক্টের দ্বারা পরিচিত নয়)

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


1
+1, এটি তথ্য বিশেষজ্ঞের নীতিটির একটি ভাল প্রয়োগ ।
ম্যাটড্যাভি

1
লক্ষণীয় যে, আপনার পরিস্থিতির উপর নির্ভর করে পদ্ধতির someValueএকটি প্যারামিটার হতে পারে NeedsMeToDoSomething
ম্যাটড্যাভে

@ ম্যাটড্যাভি: ওহ, ভাল কথা।
পিডিআর

@ পিডিআর সম্ভবত আপনার একই বুলিয়ান সহ সেই ভিউ মডেলটির একটি সম্পত্তি তৈরি করা উচিত এবং আরও বেশি জায়গায় সেই পতাকাটি পুনরায় ব্যবহার করা উচিত। আমি নিশ্চিত আপনি এটি সহজ পাবেন।
রডু ফ্লোরস্কু

5

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

var isValid = !_someViewModelNameThatIsLong.ThisIsABooleanPropertyThatIsImportant;
if( isValid ) 
{
    if( _someViewModelNameThatIsLong.AnotherPropertyINeedToCheck == someValue ) 
    {
        //Do something
    }
}

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


2

আপনি যদি সি / সি ++ ব্যবহার করেন তবে প্রিপ্রসেসর পঠনযোগ্যতা সরবরাহ করতে পারে।

#define NOT !

if(_someViewModelNameThatIsLong.AnotherPropertyINeedToCheck == someValue &&
    NOT _someViewModelNameThatIsLong.ThisIsABooleanPropertyThatIsImportant)
{
    //Do something
}

বা সম্ভবত ... ফাংশন না (এক্স) {রিটার্ন! এক্স; } // জাভাস্ক্রিপ্ট
অ্যালেক্স

2
সি এবং সি ++ এ অপারেটর ইতিমধ্যে বিভিন্ন অপারেটরগুলির জন্য স্ট্যান্ডার্ড প্রতিশব্দ রয়েছে।
জোয়েল

0

আমি সরাতে পারি

`!_someViewModelNameThatIsLong.ThisIsABooleanPropertyThatIsImportant`

এমন পদ্ধতিতে এটি ফিরে আসে। আপনি যদি এই পদ্ধতির নামটি নাও করেন তবে এই আইস্যাবুলিয়ান প্রপার্টিটিআইটিআইএসপি গুরুত্বপূর্ণ আপনার ভাল হওয়া উচিত।

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