কীভাবে দলের সদস্যদের মধ্যে জেনেরিক প্রোগ্রামিংয়ের জন্য সচেতনতা ছড়িয়ে দেওয়া যায়?


20

আমি এমন পরিবেশে থাকি, যেখানে লোকেরা বিশ্বাস করে:

  1. জাভা জেনেরিক্স বৈশিষ্ট্যটি একচেটিয়াভাবে লাইব্রেরি লেখার জন্য ব্যবহৃত হয় আসল কোডিংয়ের জন্য নয়।
  2. সি ++ একটি ওও প্রোগ্রামিং ভাষা; templateএটি একটি alচ্ছিক এবং এড়ানো যায় এমন বৈশিষ্ট্য

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

এ জাতীয় মানসিকতা সাধারণ প্রোগ্রামার থেকে সিনিয়র সর্বাধিক ব্যবস্থাপকের কাছে প্রযোজ্য। বাইরে বেরোনোর ​​কোনও উপায় নেই, কারণ 90% সময় এই লোকদের লবিং থাকে।

তাদের ব্যাখ্যা করার সর্বোত্তম উপায় ( গলা কেটে ফেলা হচ্ছে না ), লিখিত কোডের ব্যবহারিক পদ্ধতির যা ওও এবং জেনেরিক প্রোগ্রামিং উভয় একই সময়ে গঠন করে?


11
আমি আপনাকে শুভকামনা জানাই, তবে আপনি যদি নিজের পথ চান তবে আপনাকে সম্ভবত চলে যেতে হবে ..
দ্য মফিন ম্যান

3
@ মফিনম্যান, আপনি ঠিক বলেছেন। আমি সেই কর্মস্থানটি ছেড়ে চলে এসেছি এবং এখন আমার নিজস্ব সংস্থা রয়েছে। এখানে কোডিং উপর আমার সম্পূর্ণ নিয়ন্ত্রণ আছে!
iammilind

উত্তর:


14

এখনও বিশ্বে এমন লোক রয়েছে যারা "সাধারণ কোডিং" তে জাভ জেনেরিকগুলি ব্যবহার করবেন না । আমি এটি সি ++ টেম্পলেটগুলির সাথে বিশ্বাস করতে পারি, তবে জেনেরিকস? তারা শিখতে / ব্যবহার করাও কঠিন নয়। গুরুতরভাবে জাভা এবং সি ++ এর সেরা বৈশিষ্ট্যগুলি যথাক্রমে জেনেরিক এবং টেম্পলেট।

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

যতক্ষণ আপনি আপনার প্রোগ্রামিং ভাষা হিসাবে টেমপ্লেটগুলি ব্যবহার করার মতো কিছু করছেন না, প্যারাম্যাট্রিক পলিমারফিজম (জেনেরিক্স / টেম্পলেট) প্রায় অবশ্যই ভাল।

1. কোড সদৃশ এড়ানো।

এটি সুস্পষ্ট, তবে বহুতল কোডটি সাধারণ কোড। এজন্য এটিকে জেনেরিক বলা হয়।

2. আরও ভাল স্থিতিশীল চেকিং সমর্থন করে।

স্থিতিমাপ পলিমরফিজম ছাড়া শেষ পর্যন্ত ভালো জিনিস লেখা public Object clone()বা public boolean equals(object b)যা শুধু জঘন্য কাজ হয় না, তারা ধরনের যে তারা কি সম্পর্কে কোন তথ্য প্রদান আছে, এবং অপরিবর্তনীয়ভাবে সব জায়গায় বেশি ব্যতিক্রম নিক্ষেপ শেষ। প্যারামেট্রিক পলিমারফিজমের বিকল্প হ'ল পুরো জায়গা জুড়ে কাস্ট

৩. অ প্যারাম্যাট্রিক পলিমারফিজম ওওপি কোড মূলত "বাইনারি পদ্ধতিগুলি" সঠিক উপায়ে পরিচালনা করতে অক্ষম।

আপনি এগুলি প্রায়শই ব্যবহার করেন।

৪. এটি সর্বোত্তম অনুশীলন

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

৫. এটি ওও দৃষ্টান্তের সাথে খাপ খায়।

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

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

জেনারিক্স রেসকিউ!

   public class Business<S extends Datastore>{
      private S store; ...
   }

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

এবং

Nor. সাধারণ কোডের অস্তিত্ব নেই।

প্রোগ্রামিং মহাবিশ্বে কেবল তিনটি জিনিস রয়েছে:

  1. লাইব্রেরি,
  2. কনফিগারেশন, এবং
  3. খারাপ কোড

আপনি যদি আপনার কোডটি লাইব্রেরির মতো ভাবেন না তবে আপনার প্রকল্পের প্রয়োজনীয়তার পরিবর্তনের সময় আপনি গুরুতর সমস্যায় পড়বেন। আর্কিটেকচারটি (যুক্তিযুক্তভাবে) ভাল এপিআই ডিজাইনের শিল্প।

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


7
আমি ধারণা যে ভালো normal code: কোন অস্তিত্ব নেই এবং শুধুমাত্র তিন প্রকারঃ আছে libraries, configurationsএবং bad code। এটি একটি আদর্শবাদী যুক্তি যদিও আপনাকে এখনও এটি আপনার সহকর্মীদের কাছে ব্যাখ্যা করতে হবে যদিও আপনার মতো আদর্শবাদী নাও হতে পারে। আমি সম্মত যে যদিও parametrized ধরনের ব্যবহার কেবল কি ভয়ঙ্কর একবার আপনি তা পেতে আসে।
স্পোইক

3
মুরগি, এমনকি সি ++ টেম্পলেটগুলি ব্যবহার করা ততটা কঠিন নয় যদি আপনি সেগুলি টেমপ্লেট রূপক উদ্দেশ্যে ব্যবহার না করেন। :-)
সিলিকো

-1 পরামর্শ দেওয়ার জন্য যে জেনেরিকগুলি ব্যবহার না করার সিদ্ধান্ত নেয় এমন প্রত্যেকে এটি বৈশিষ্ট্যটি কীভাবে কাজ করে তা জানেন না বলেই এটি করেন।
tp1

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

বড় আকারের সফটওয়্যার ইঞ্জিনিয়ারিংয়ের জন্য জেনেরিক / টেম্পলেটগুলি অস্বীকার করা লোকেরা দুর্ঘটনাক্রমে এবং অনিবার্যভাবে একটি "দ্বিতীয় ভাষা" তৈরি করবে - জাভাতে চলমান একটি দোভাষী, যা তাদের মনে যে "ব্যবসায়ের ভাষা" প্রয়োগ করে। en.wikipedia.org/wiki/Inner-platform_effect
rwong

16

এটি আরও সাধারণ প্রশ্নের একটি বিশেষ রূপ যা "আপনি কীভাবে আপনার উচ্চপদস্থ ব্যক্তিকে নতুন ও উন্নত প্রযুক্তি / জিনিস তৈরির পদ্ধতি ব্যবহার শুরু করতে বাধ্য করেন?"

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

আপনার অন্যান্য মতামত থাকতে পারে যা আপনার নেই, কারণ আপনি তাদের স্তরের বিষয়ে চিন্তা করছেন না। আপনি ইঞ্জিনিয়ার হিসাবে ভাবছেন, তারা ব্যবসায়ের দিক থেকে এমনকি মানবসম্পদের ক্ষেত্রেও বেশি চিন্তাভাবনা করতে পারে।

  • জেনেরিকগুলি (বা যাই হোক না কেন) তাদের পণ্যের মান উন্নত করবে? সম্ভবত না.

  • জেনেরিকগুলি (বা যাই হোক না কেন) লোকদের পক্ষে আরও কঠিন হয়ে উঠবে যে তারা ইতিমধ্যে তাদের কাজ করার জন্য নিয়োগ করেছে? হ্যাঁ.

  • জেনেরিকস কি সময়-বাজারে উন্নতি করবে? যদি একমাত্র প্রকৌশলী আপনি ছিলেন, সম্ভবত। তবে ঘরে অন্য একটি লাইন কোড লেখার আগে যদি পুরো গোছা প্রকৌশলীকে জেনেরিকের উপর শিক্ষিত করা প্রয়োজন, না No.

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


9

আমি কোনও পর্যালোচনার আগে কোড পর্যালোচক এবং অন্যান্য সহকর্মীদের কাছে জেনেরিকের গুণাবলী সম্প্রচার করব:

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

2) জেনেরিকগুলি একাধিক প্রয়োগের ওভারহেড ছাড়াই ধরণের সুরক্ষা সরবরাহ করে।

সুতরাং, [1] এবং [2] কোডটিতে ত্রুটির ঝুঁকি হ্রাস করে। এটি বিকাশকারীদের সময় এবং তাই সংস্থার অর্থ সাশ্রয় করে।

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

অন্যান্য প্রোগ্রামারদের জেনেরিকগুলির সাথে কীভাবে সমস্যা নেই সে সম্পর্কে আমি কয়েকটি বিবৃতি যুক্ত করব: জেনারিকস জাভা এবং সি # এর মতো আরও অনেক ভাষায় ব্যাপকভাবে ব্যবহৃত হয়। যে কোনও গুরুতর প্রোগ্রামার এই জাতীয় নিরাপদ বিল্ডিং ব্লকগুলি ব্যতীত জীবনকে কঠিন মনে করবে।

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

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


7

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

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

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

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

স্পষ্টতই আমি প্রকাশ-অ-চুক্তি লঙ্ঘন না করে আসল উদাহরণটি প্রদর্শন করতে পারি না। তবে আমি যা করেছি তার উদাহরণ হিসাবে কৌশল প্যাটার্নটি করা এবং জেনারিকগুলি সহ এটি প্রয়োগ করা হবে। সুতরাং এটি কৌশল প্যাটার্ন:

এখানে চিত্র বর্ণনা লিখুন

এবং প্রোগ্রামাররা এই প্যাটার্নটি প্রয়োগ করার জন্য, আপনি জেনেরিক টাইপটি এতে যুক্ত করতে পারেন Contextযাতে এটিতে একটি জাতীয় কিছু ব্যবহার করা উচিত Strategy। কোডভিত্তিক জাভাতে এটি দেখতে এরকম কিছু দেখাবে:

// declare the generic Context class that has a type "S" 
// that is an upper bound class of Strategy
public class Context <S extends Strategy> {
    S strategy;

    // Constructor with an initial strategy
    public Context(S initialStrategy) {
        this.strategy = initialStrategy;
    }

    public void doSomething() {
      strategy.execute(); // assumes that Strategy has an execute() method.
    }

    public void setStrategy(S strategy) {
        this.strategy = strategy;
    }
}

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

যদি আপনার সহকর্মীরা ধারণাটি পছন্দ করেন না তবে ব্যক্তিগতভাবে এটিকে গ্রহণ করবেন না, আপনি যেমন ভাবেন ঠিক তত সহজে পরিচালনা করার পক্ষে এটি সমাধানের পক্ষে এত সহজ হয়নি। যে কারণে আপনি এটি কার্যকর করার আগে জেনেরিক / টেম্পলেট সমাধানের প্রস্তাব দেওয়া উচিত। প্রকৃত সমস্যাটিকে ভিন্ন ফ্যাশনে সমাধান করতে আপনাকে এখনও আপনার সহকর্মীদের সাথে একসাথে কাজ করতে হবে।


চিত্রটি ভালোবাসি! আপনি কোন সরঞ্জামটি ব্যবহার করেছেন?
ইয়ানিস

@ ইন্নিসরিজস আমি yuml.me ব্যবহার করেছি যা পাঠ্য ইনপুট থেকে ডায়াগ্রাম তৈরি করে। বিটা পরিষেবাটি এই মুহুর্তে কিছুটা বগিযুক্ত (যদিও আপনি উত্পন্ন লিঙ্কটি ব্যবহার করে উত্পন্ন ছবিটি আপনার পোস্টে আপলোড করতে পারেন)।
স্পোকাইক

বুকমার্ক, ভাগ করে নেওয়ার জন্য ধন্যবাদ। যদিও আমি সত্যিই আরও একটি বাক্য গঠন শিখতে চাই না, তবে সরল, এটি দুর্দান্ত দেখায় এবং আমি এটিকে এক পর্যায়ে যেতে দেব।
ইয়ানিস

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

@ ইয়ানিসরিজস ইউইউএমএল একটি দুর্দান্ত সরঞ্জাম। আপনি এটি দিয়ে কী করতে পারেন তার আরও কয়েকটি উদাহরণ এখানে দেওয়া হয়েছে: carnotaurus.philipcarney.com/tagged/yUML
CarneyCode

4

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

তবে, যদি আপনার কোড পর্যালোচনাটি ব্যর্থ করে, কারণ তারা টেম্পলেটগুলি বুঝতে পারে না, তবে সমস্যাটি বিভিন্ন ধরণের। সেক্ষেত্রে তাদের (একটি সুন্দর উপায়ে) টেমপ্লেট শিখতে পরামর্শ দিন।


4

আপনি এখানে যা ব্যবহার করছেন তা হ'ল পক্ষপাতিত্বের সংগ্রহ। লোকেরা স্থিতিস্থাপকতা পছন্দ করে, একটি গ্রুপথিংক বিকশিত হয়েছিল এবং যুক্তিটি কয়েকবার বেঁধে দেওয়া হয়েছে যাতে লোকেরা তাদের বিশ্বাসে আবদ্ধ হয়ে পড়েছে।

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

তাই একবারে সবাইকে বোঝানোর চেষ্টা করবেন না: এর বিপরীত প্রভাব পড়বে। একটি ছোট জিনিস ফোকাস, এবং বাকি নিজেই ঘটবে। যুক্তিটির দ্বিমুখী প্রকৃতি থেকে কেবল মুক্তি পান যাতে লোকেরা একবারে না হয়ে একসাথে কিছুটা পার হয়ে যায়।

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


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

2

"বোধগম্য" দ্রষ্টব্য। কোড পর্যালোচক যদি <<<>>>জেনেরিকের সুবিধা না দেখে তবে সমস্ত স্টাফ কেবল অ-বোধগম্য শব্দ যা অপ্রয়োজনীয়।

আমি আপনার বাগ বাগ ডাটাবেসে জেনেরিকগুলি ব্যবহার করে এড়ানো যেতে পারত এমন কতগুলি বর্তমান বাগ (খোলার বা সাম্প্রতিক স্থির করা হয়েছে) একবার দেখার পরামর্শ দেব। ClassCastExceptions জন্য সন্ধান করুন।

আরও মনে রাখবেন যে জেনেরিক ব্যবহার করে যদি আপনার কাছে কোনও বাগ নেই যা এড়ানো যেত তবে আপনার সহকর্মীদের একটি বক্তব্য রয়েছে যে আপনার প্রয়োজন নেই।


2

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

আমার জেনেরিক যাত্রা থেকে এ পর্যন্ত আরও কয়েকটি এলোমেলো চিন্তা:

  • ক্লাসকাস্টএক্সেপশন রানের সময় ঘটে তবে এগুলি সাধারণত প্রথম কয়েকটি রানে উপস্থিত হয় এবং এটি ঠিক করা সহজ।
  • আমি জেনারিক্সের উপর পড়ে থাকা প্রতিটি নিবন্ধে বলা হয়েছে যে কখনও কখনও তারা কেবল কাজ করে না এবং আপনার @SuppressWarnings(value="unchecked")মাঝে মাঝে ব্যবহার করা প্রয়োজন । আপনি জেনেরিকের সীমা ছাড়িয়ে গেলে বা আপনি যদি বোকা হয়ে থাকেন এবং আরও কঠিন চিন্তা করার দরকার আছে তবে আপনি কীভাবে জানবেন?
  • এটি @SuppressWarnings(value="unchecked")কেবল একটি লাইনে প্রয়োগ করা কঠিন হতে পারে ।
  • আমি আমার ক্লাসের একটিতে কিছু অভিনব জেনেরিক যুক্ত করেছি। আমি বেশ কয়েকজন প্রোগ্রামারকে চিনেছি যারা জেনারিক করার আগে ক্লাসটি বাড়িয়ে তুলতে পারত যারা এটিকে কখনও স্পর্শ করতে পারে না এবং পরে একটি পরিষ্কার সংকলন অর্জন করতে পারে না।

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

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