"চাকা পুনরুদ্ধার করবেন না" কি মানুষের স্মৃতির সীমাবদ্ধতা উপেক্ষা করে?


16

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

প্রোগ্রামিংয়ে অ্যাবস্ট্রাকশনগুলিকে পুনরায় ব্যবহার করার ক্ষেত্রে এমন জোর দেওয়া হয় যে আমি প্রায়শই একটি দ্বিধা অনুভব করি: 1) কেবল নিজেকে ছোট এবং নোংরা কিছু কোডিং করা বা 2) অন্য কারও আরও দৃust় লাইব্রেরি / সমাধান সন্ধান করতে একই সময় ব্যয় করা এবং এটি ব্যবহার করা।

সম্প্রতি যেমন কোডারদের একজন সিএসভি ফাইলের জন্য একটি (ডি) সিরিয়ালাইজার লিখেছেন, এবং আমি সাহায্য করতে পারিনি তবে ভাবতে পারি যে এরকম কিছু সম্ভবত অনলাইনে পাওয়া খুব সহজ, যদি এটি ইতিমধ্যে নেট স্ট্যান্ডার্ড না আসে if Apis।

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

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

উত্তর:


9

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

প্রোগ্রামিংয়ে অ্যাবস্ট্রাকশনগুলিকে পুনরায় ব্যবহার করার ক্ষেত্রে এমন জোর দেওয়া হয় যে আমি প্রায়শই একটি দ্বিধা অনুভব করি: 1) কেবল নিজেকে ছোট এবং নোংরা কিছু কোডিং করা বা 2) অন্য কারও আরও দৃust় লাইব্রেরি / সমাধান সন্ধান করতে একই সময় ব্যয় করা এবং এটি ব্যবহার করা।

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


2
যদিও প্রায়শই, আপনি লাইব্রেরিতে আরও রক্ষণাবেক্ষণের সময় ব্যয় করতে পারেন এমনকি এটি ভাল এবং সক্রিয়ভাবে বজায় থাকলেও। সাধারণত এটি তখন ঘটে যখন এটি এমনভাবে ডিজাইন করা হয়েছিল যাতে ঠিক আপনার কোডটি কোনওভাবে ফিট না করে fit
জেসন বেকার 21

বিদ্যমান গ্রন্থাগার / সমাধান অনুসন্ধানে ব্যয় করা সময়কে ন্যায়সঙ্গত করার জন্য +1 ।
রবিং

পিট ক্রুদের নির্দেশ করার জন্য +1, আমরা সবসময় তাদের সম্পর্কে ভুলে যাব বলে মনে হয়
ফিলিপ দুপানোভি

5

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

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


1
...কাছাকাছি বা অন্যান্য উপায়. কখনও কখনও এটি একটি খুব নির্দিষ্ট কাজের জন্য সুর করা হয়েছিল এবং আপনার কোডটি যা করার দরকার তা করার জন্য এটি যথেষ্ট নমনীয় নয়।
জেসন বেকার 21

এটিই আমি উত্তর দিতে যাচ্ছিলাম
ডোমিনিক ম্যাকডোনেল

4

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

  1. আপনার নিজের রোল।
  2. অন্য কারোর সমাধানের উপরে কিছু তৈরি করুন।

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

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


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

2

এটি (বা অনুরূপ জিনিস) প্রায়শই আমার সাথে আগের কাজের ক্ষেত্রে হয়েছিল যেখানে ফ্রেমওয়ার্কটি মারাত্মক ইনার প্ল্যাটফর্ম প্রভাবের সাথে ভুগছিল।

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

(ঠিক আছে, সুতরাং এটি আপনার প্রাথমিক পয়েন্টের প্রায় বিপরীত বলে মনে হচ্ছে - তবে নীতিটি হ'ল হ্যাঁ, কখনও কখনও কোনও বিদ্যমান পুনরায় ব্যবহারের যোগ্য খুঁজে পাওয়ার জন্য সময় এবং প্রচেষ্টা ব্যয় করার চেয়ে আপনার নিজের কাজ করা খুব দ্রুততর হয়) সমাধান।)

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