আমি কীভাবে আমার দলে বিল্ডার প্যাটার্ন ব্যবহারের প্রচার করতে পারি?


22

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

  • সেটার পদ্ধতিগুলি সরানো হয়েছে এবং সমস্ত ক্ষেত্র তৈরি করা হয়েছে final(আমি " finalভাল" অক্ষতভাবে গ্রহণ করি)। সেটারগুলি কেবল কনস্ট্রাক্টারে ব্যবহৃত হয়েছিল, এটি দেখা যাচ্ছে, সুতরাং এর কোনও পার্শ্ব প্রতিক্রিয়া ছিল না had
  • একটি বিল্ডার শ্রেণি চালু করল

বিল্ডার শ্রেণিটি প্রয়োজনীয় ছিল কারণ কনস্ট্রাক্টর (যা প্রথম স্থানে রিফ্যাক্টরিং প্রম্পট করে) প্রায় 3 লাইনের কোড বিস্তৃত করে। এটির অনেকগুলি পরামিতি রয়েছে।

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

public void foo(Bar bar){
    //do stuff
    bar.setA(stuff);
    //do more stuff
    bar.setB(moreStuff);
}

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

public void foo(Bar bar){
    try{
        bar.setA(a);
        //enter exception-throwing stuff
        bar.setB(b);
    }catch(){}
}

যদি সেই ব্যতিক্রমটি আগুন জ্বলতে barথাকে তবে এতে দুর্নীতিগ্রস্ত ডেটা থাকবে, যা কোনও নির্মাতার সাথে এড়ানো হত:

public Bar foo(){
        Builder builder=new Builder();
    try{
        builder.setA(a);
        //dangerous stuff;
        builder.setB(b);
        //more dangerous stuff
        builder.setC(c);
        return builder.build();
    }catch(){}
    return null;
}

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

সমঝোতাটি ছিল পুরানো সমাধানটিতে ফিরে যাওয়া, কোনও প্যারামিটার ছাড়াই একটি কন্সট্রাক্টর ব্যবহার এবং প্রয়োজনীয় হিসাবে সেটারগুলি দিয়ে সবকিছু সেট করা। যুক্তি ছিল যে এই সমাধানটি KISS নীতি অনুসরণ করে, যা খনিটি লঙ্ঘন করে।

আমি এই সংস্থায় নতুন (months মাসেরও কম) এবং পুরোপুরি সচেতন যে আমি এইটি হারিয়েছি। আমার কাছে প্রশ্ন (গুলি) হ'ল:

  • "পুরানো উপায়" এর পরিবর্তে বিল্ডার ব্যবহারের জন্য কি আর কোনও যুক্তি রয়েছে?
  • আমি প্রস্তাবিত পরিবর্তনটি কি এটি সত্যই মূল্যবান?

কিন্তু সত্যিই,

  • নতুন কিছুর চেষ্টা করার পক্ষে আপনার পক্ষে এ জাতীয় যুক্তি আরও ভালভাবে উপস্থাপন করার জন্য কোনও টিপস রয়েছে?

6
নির্মাতার কোনওভাবে মান নির্ধারণ করা দরকার। সুতরাং এটি বেসিক সমস্যাটি সমাধান করে না।
অ্যামি ব্লাকনশিপ

3
কল করার আগে (আরও / বিপজ্জনক / ব্যতিক্রম-ছোঁড়া) স্টাফ স্থানান্তরিত করা যায় না তার কারণ কী setA?
ইয়তিমা 2975

2
কনস্ট্রাক্টর পরামিতিগুলির কেবল 3 লাইন? যে খুব খারাপ না।
pjc50

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

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

উত্তর:


46

আমাদের কোথাও শুরু করতে হবে ভেবে, আমি এটি একটি ডেটা ধারক শ্রেণীর রিফ্যাক্টর করার জন্য নিজের উপর নিয়েছিলাম

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

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

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


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

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

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

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

3
@ ব্র্যান্ডন - আপনি যদি দুর্বৃত্ত হয়ে কিছুটা ঠিক করতে যাচ্ছেন "যে সবাই প্রত্যেকেই ভুল বলেছে" তবে আপনি সম্ভবত এমন কিছু বাছাই করার চেয়ে আরও বেশি সাফল্য অর্জন করতে পারেন যা সর্বোপরি বিভিন্ন শিবির রয়েছে এমন কিছু বাছাই করার চেয়ে " বিষয়; অপরিবর্তনীয়তার মতো। একটি ভাল নকশা / আর্কিটেকচার কার্যত কোনও পুরষ্কারের জন্য অপরিবর্তনশীল উচ্চ ব্যয় করে। সুতরাং যদি আপনার টিমের সমস্যা না হয় কারণ তারা সেটার ব্যবহার করছে তবে আপনি কোনও সমস্যা সমাধান করছেন না। OTOH, যদি এটি ঘন ঘন বাগের উত্স হয়ে থাকে তবে মনে হয় এই দলিল সিদ্ধান্তকে ন্যায্যতা দেয়।
ডাঙ্ক

21

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

বর্ণিত হিসাবে, আমি কোডটি সেটটারগুলির প্রয়োজনীয় কী করে তা দেখতে পাচ্ছি না । আমি সম্ভবত ব্যবহারের ক্ষেত্রে যথেষ্ট জানিনা, তবে অবজেক্টটি ইনস্ট্যান্ট করার আগে সমস্ত পরামিতিগুলি না জানা পর্যন্ত অপেক্ষা করবেন না কেন?

বিকল্প হিসাবে, যদি পরিস্থিতিটি সেটটারগুলির প্রয়োজন হয়: আপনি যদি কোডটি প্রস্তুত করার পরে ক্ষেত্রগুলি সংশোধন করার চেষ্টা করেন তবে সেটারগুলিতে আপনার কোডটি স্থির করার জন্য একটি উপায় প্রস্তাব করুন সেটারগুলিতে একটি দৃser়তা ত্রুটি (ওরফে প্রোগ্রামার ত্রুটি) নিক্ষেপ করুন।

আমি মনে করি সেটারগুলি অপসারণ এবং চূড়ান্ত ব্যবহার করা হ'ল এটি করার "যথাযথ" উপায়, পাশাপাশি অপরিবর্তনীয়তা প্রয়োগ করা, তবে এটি কি আপনার সাথে আপনার সময় কাটাতে হবে?

সাধারণ টিপস

পুরানো = খারাপ, নতুন = ভাল, আমার উপায়, আপনার উপায় ... এই জাতীয় আলোচনাটি গঠনমূলক নয়।

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

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

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

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

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

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

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

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


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

@ আরথ নতুন কোনও কোডবেস তৈরি হচ্ছে না?
বিজিকলপ

@ বিজিক্লপ পুরানো কোডবেসে নতুন নতুন মডিউল যুক্ত রয়েছে। আমি সম্প্রতি একটি নিয়ে কাজ করেছি। সুখের দিনগুলি.
রথ

5
@ আরথ সম্ভবত আপনার একটি ব্যক্তিগত প্রকল্পের প্রয়োজন যা আপনি আপনার নিজের সময়ে কাজ করতে পারেন যেখানে আপনি নিজের উন্নয়নকে এগিয়ে নিতে পারেন? আমি আপনার "বিল্ডার" প্যাটার্ন যুক্তির দ্বারাও নিশ্চিত নই; আপনি যে তথ্য সরবরাহ করেছেন তার উপর ভিত্তি করে গ্রাহকরা / সেটটারগুলি একেবারে ঠিক আছে সমাধান বলে মনে হচ্ছে। মনে রাখবেন যে আপনি আপনার নিয়োগকর্তা এবং আপনার দলের কাছে দায়বদ্ধ; আপনার অগ্রাধিকার নিশ্চিত করে তোলে যে আপনি যে কোনও কাজই দায়বদ্ধ হয়ে তাদের পক্ষে উপকারী।
বেন কট্রেল

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

17

আমি কীভাবে আমার দলে বিল্ডার প্যাটার্ন ব্যবহারের প্রচার করতে পারি?

আপনি না।

যদি আপনার কনস্ট্রাক্টরের 3 লাইন প্যারামিটার থাকে তবে এটি খুব বড় এবং খুব জটিল। কোনও নকশার প্যাটার্ন এটি ঠিক করবে না।

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


এটি Stringগুলি এবং অন্যান্য আদিমতার একটি বড় ডেটা ধারক । কোথাও কোনও যুক্তি নেই, এমনকি nullএস ইত্যাদির জন্যও পরীক্ষা করা নেই not সুতরাং এটি কেবল নিছক আকার, প্রতি সেচ জটিলতা নয়। আমি ভেবেছিলাম এরকম কিছু builder.addA(a).addB(b); /*...*/ return builder.addC(c).build();করা চোখে অনেক সহজ হবে।
রথ

8
@ আরথ: এটি স্ট্রিংস এবং অন্যান্য আদিমদের একটি বড় ডেটা ধারক। => তারপরে আপনার অন্যান্য সমস্যা রয়েছে, আশা করুন কেউ যদি ই-মেইল ফিল্ডটি দুর্ঘটনাক্রমে লোকের পোস্ট ঠিকানার সাথে নিযুক্ত হয় তবে কেউই চিন্তা করে না ...
ম্যাথিউ এম।

@MatthieuM। একসময় আমার মনে হয় একটি সমস্যা :)
রথ

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

1
আমি এর চেয়ে অনেক বেশি পরামিতি সহ অনেক নির্মাতা soooooo করেছি। আইওসি নিদর্শনগুলিতে প্রয়োজনীয়। এই উত্তরে খারাপ সাধারণীকরণ।
djechlin

16

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

বিপরীত।

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

এটি ধারাবাহিকভাবে করুন এবং আপনার কম দ্বন্দ্ব তৈরি করা উচিত এবং আপনার ধারণাগুলির বেশিরভাগই অন্যদের দ্বারা গৃহীত হওয়া সন্ধান করুন। আমরা সকলেই এই মায়ায় ভুগি যে নিখুঁত যৌক্তিক যুক্তি অন্যকে ঘৃণা করবে এবং দিনটি জিতবে। এবং যদি এটি সেভাবে কাজ করে না, আমরা মনে করি এটি করা উচিত

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


2
Frame your thoughts as suggestions and ideas. Get THEM to talk through THEIR ideas before asking questions to make them think about yoursতবুও +1
রথ

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

2
@ আরথ: এখানে কোন সঠিক বা ভুল নেই। শুধু ব্যবসা বন্ধ। এবং প্রায়শই ট্রেড অফগুলি একা কোডের চেয়ে বেশি জড়িত না।
মার্জন ভেনেমা

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

2
এমন একটি একক প্রোগ্রামিং "সেরা অনুশীলন" নেই যা সম্পর্কে আমি অবগত যা এর ব্যতিক্রমগুলি যেখানে সেরা নয় তা নেই। কখনও কখনও এই ব্যতিক্রমগুলি খুঁজে পাওয়া শক্ত, তবে সেগুলি সর্বদা বিদ্যমান।
btilly

11

"পুরানো উপায়" এর পরিবর্তে বিল্ডার ব্যবহারের জন্য কি আর কোনও যুক্তি রয়েছে?

"আপনার যখন নতুন হাতুড়ি থাকবে তখন সবকিছুই পেরেকের মতো লাগবে।" - আমি আপনার প্রশ্নটি পড়ার সময় আমি এটি ভেবেছিলাম।

আমি যদি আপনার কোলীগ হয়ে থাকি তবে আমি আপনাকে জিজ্ঞাসা করতাম "কেন কনস্ট্রাক্টরে পুরো বস্তুটি আরম্ভ করবেন না?" সর্বোপরি এটি এর কার্যকারিতা। বিল্ডার (বা অন্য কোনও ডিজাইন) প্যাটার্নটি কেন ব্যবহার করবেন?

আমি প্রস্তাবিত পরিবর্তনটি কি এটি সত্যই মূল্যবান?

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

নতুন কিছুর চেষ্টা করার পক্ষে আপনার পক্ষে এ জাতীয় যুক্তি আরও ভালভাবে উপস্থাপন করার জন্য কোনও টিপস রয়েছে?

হ্যাঁ, আলোচনা করার আগে বিষয়টি সম্পর্কে আরও জানুন। আলোচনায় প্রবেশের আগে ভাল যুক্তি এবং যুক্তি দিয়ে নিজেকে সজ্জিত করুন।


7

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

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

আসল প্রশ্ন

অপরিবর্তনীয় জিনিস কেন ব্যবহার করবেন? কারণ আপনি জানেন আপনি কী নিয়ে কাজ করছেন।

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

যাইহোক বলুন যে আপনার কাছে এমন একটি ডেটা কাঠামো রয়েছে যা অধ্যবসায় থেকে পুনরুদ্ধার করা যায় এবং তারপরে নতুন ডেটা দিয়ে পুনরায় স্থির রাখা যায়, তারপরে এটি বোঝা যায় যে এই কাঠামোটি স্থায়ী নয়। এটি একই সত্তা, তবে মানগুলি পরিবর্তন করতে পারে। পরিবর্তে আর্গুমেন্ট হিসাবে অপরিবর্তনীয় মান বস্তু ব্যবহার করুন ।

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

TL; ড

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


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

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

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

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

@ ডাঙ্ক আমি দেখতে পাচ্ছি যে আপনার বিষয়ে আলাদা মতামত রয়েছে তবে আমি এই বিষয়ে। আপনার অন্যান্য উত্তর থেকে পড়া যদি, আপনার আরো জনপ্রিয় বলে মনে হচ্ছে। আমি একমত নই, কেন আমি এই উত্তরটি বিরোধিতা করে লিখেছি। আপনি যা বলেছেন তা আমার মন বদলেনি।
সুপারহিরো

2

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

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

// business objects

interface CharRange {
   public char getCharacter();
   public int getFrom();
   public int getTo();
}

class MultiCharRange implements CharRange {
   final char ch;
   final int from;
   final int to;

   public char getCharacter() { return ch; }
   public int getFrom() { return from; }
   public int getTo() { return to; }
}

class SingleCharRange implements CharRange {
   final char ch;
   final int position;

   public char getCharacter() { return ch; }
   public int getFrom() { return position; }
   public int getTo() { return position; }
}

// builders

class Builder1 {
   public Builder2 character(char ch) {
      return new Builder2(ch);
   }
}

class Builder2 {
   final char ch;
   int from;
   int to;

   public Builder2 range(int from, int to) {
      if (from > to) throw new IllegalArgumentException("from > to");
      this.from = from;
      this.to = to;
      return this;
   }

   public Builder2 zeroStartRange(int to) {
      this.from = 0;
      this.to = to;
      return this;
   }

   public CharRange build() {
      if (from == to)
         return new SingleCharRange(ch,from);
      else 
         return new MultiCharRange(ch,from,to);
   }
}

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

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

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

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


1
কোনও বস্তুর তৈরির প্রক্রিয়াতে রূপান্তরিত করে আপনি জটিল লজিক্যাল সীমাবদ্ধতাগুলি প্রয়োগ করতে পারেন। BAM। এবং জটিলতার বিষয়ে যা বোঝায় এটি যখন ছোট, বিচ্ছিন্ন, সরল পদক্ষেপে সংগঠিত হয় ।
রডারবব

2

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

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

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

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


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