আপনি কীভাবে আপনার ওওপি ডিজাইনের জন্য ভাল অনুশীলনগুলি পেয়েছেন? [বন্ধ]


12

আমি বুঝতে পেরেছি ওওপি ডিজাইন তৈরি করতে আমার অসুবিধা হচ্ছে। এই সম্পত্তিটি সঠিকভাবে X শ্রেণিতে সেট করা হয়েছে কিনা তা সিদ্ধান্ত নেওয়ার জন্য আমি অনেক সময় ব্যয় করেছি।

উদাহরণস্বরূপ, এটি এমন একটি পোস্ট যা কিছু দিন রয়েছে: /codereview/8041/how-to-improve-my-factory-design

আমি আমার কোড সম্পর্কে নিশ্চিত নই তাই আমি আমার ডিজাইনগুলি উন্নত করতে চাই, এটি তৈরি করতে কম সময় নিই।

আপনি কীভাবে ভাল ডিজাইন তৈরি শিখলেন? কিছু বই যা আপনি আমাকে সুপারিশ করতে পারেন?


আপনার বর্তমান স্তর কি? আমি মনে করি আপনি ডিজাইনের ধরণ সম্পর্কে জানেন?
ACNB

মোটেও নয়, আসলে আমি তাদের কয়েকটি PluralSight কোর্সে পড়তে শুরু করেছি: বহুবচন
প্রশিক্ষণ.

1
সফটওয়্যার ডিজাইনের সবচেয়ে প্রভাবশালী বইগুলির মধ্যে রয়েছে '' ডিজাইনের প্যাটার্নস: পুনরায় ব্যবহারযোগ্য অবজেক্ট-ওরিয়েন্টেড সফ্টওয়্যার এর উপাদানসমূহ ''। এটি এখনও পড়ার মতো, যদিও এটি এখন কিছুটা তারিখের। আপনি [ en.wikiki.org/wiki/Software_design_ Pattern + ( উইকিপিডিয়া নিবন্ধগুলি) পড়াও শুরু করতে পারেন । এই সফ্টওয়্যার ডিজাইনের নিদর্শনগুলি আপনাকে সাধারণ সমস্যার জন্য কেবল ভাল সমাধান সরবরাহ করে না, তবে এখন পেশাদার পরিভাষারও একটি অংশ।
ACNB

1. লিখুন - 2. পর্যালোচনা (সাহিত্যের পঠন এবং পি.এসই এর মতো সাইটগুলি সহ) - 3. রিফ্যাক্টর - 4. পুনরাবৃত্তি
হুরাসকোল

অভিজ্ঞতার বিকল্প নেই, এই ধরণের জ্ঞানের কোনও সংক্ষিপ্ত ছাড় নেই

উত্তর:


14

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

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

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


4

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

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

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

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

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

সুতরাং আমি যা পরামর্শ দিচ্ছি তা এখানে:

  1. কোড লিখুন (এবং এটি কী খারাপ করে তা বোঝার চেষ্টা করুন)
  2. কোড পড়ুন (এবং এটি কী ভাল করে তোলে তা বোঝার চেষ্টা করুন)
  3. অন্যান্য লোকের সাথে জ্ঞান বিনিময় করুন। আপনার ধারণাগুলি পরীক্ষা করুন।

এটি দুর্দান্ত পরামর্শ! আমি আমার ডিজাইনের প্যাটার্ন জ্ঞানকে পুরোপুরি প্রয়োগ করার পর্যায়ে এসেছি, যেমন কেভিনের সাথে আমার আলোচনায় এখানে
দ্যসিলভার বুলেট

3

অন্যরা যেমন উল্লেখ করেছে, আপনি কেবল অনুশীলন এবং অভিজ্ঞতা দিয়ে ভাল পাবেন। শর্টকাট আপনি নিতে পারেন যে সত্যিই সেখানে নেই।

আপনি আপনার জিনিসগুলির দিকে ফিরে তাকান এবং আপনি যা লিখেছেন তা পছন্দ করেন না এটি ইতিমধ্যে আপনাকে আমাদের পেশার অন্যান্য অনেক লোকের তুলনায় বাঁক থেকে এগিয়ে রাখে। আপনি যখন নিজের উন্নতি করার চেষ্টা করছেন, তখন আমাদের বাকী 20 জন পরামিতি সহ 500-লাইনের ফাংশন লেখার লোকদের সাথে কাজ করেন, সমস্তই রেফারেন্স দিয়ে পাস হয়েছিল এবং তাদের 15 জন [আউট / আউট] রয়েছেন এবং এই লোকেরা মনে করেন তারা বোমা কারণ তারা কাজ করতে এই গোলযোগ পেয়েছে।

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

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

শুরু করার জন্য আমি এই বইগুলির সুপারিশ করব:

  • সি # তে চৌকস নীতি, প্যাটার্নস এবং অনুশীলন - আমি নিজেই এই বইয়ের মাধ্যমে 3/4 র্থ। লেখকরা যে প্রধান পয়েন্টগুলি করেন সেগুলির মধ্যে একটি এবং আমি এটির সাথে 100% সম্মত, প্রয়োগ করার জন্য ডিজাইনের প্যাটার্নটি অনুসন্ধান করে কোনও সমস্যার সমাধান শুরু করবেন না। বিকল্পগুলি যতটা সম্ভব জটিল হয়ে উঠুন এবং কোডটিকে একটি প্যাটার্নে বিবর্তিত করুন, যদি বিকল্পটি এর চেয়ে জটিল হয়ে ওঠে।
  • প্রধান ফার্স্ট ডিজাইনের প্যাটার্নস - আমি এই বইটি পড়িনি এবং আইএমওতে অনেক হেড ফার্স্ট সিরিজ বিশেষত ক্ষেত্রের আগতদের জন্য লক্ষ্যযুক্ত। সুতরাং তারা সহজ দিকে ঝোঁক, তবে আমি অন্যদের কাছ থেকে এই বইটি সম্পর্কে অনেক ভাল প্রতিক্রিয়া শুনেছি / শুনেছি

1
+1: "যতটুকু সম্ভব জিনিস সহজ রাখুন" ... "কোডটি একটি প্যাটার্নে
বিকশিত করুন

1

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

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