আমার কোডটি গন্ধ পেয়েছে তখন আমি কী করব?


13

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


15
ডিওডোরেন্ট ব্যবহার করুন;)
পেমদাস

6
এবং বাগগুলি থেকে মুক্তি পেতে কোনও জীবাণুনাশক / কীটনাশক হতে পারে :-)
স্টিফেন সি

3
কিছু রসুন খান। লোকেরা সম্ভবত আপনার দুর্গন্ধ বেশি লক্ষ করবে।
মতিন উলহাক

4
এবং এখন আপনার কাছে রয়েছে: codereview.stackexchange.com যেখানে আপনি আপনার কোডের নির্দিষ্ট উদাহরণগুলির সাহায্য নিতে পারেন।
LRE

1
উইন্ডো খুলুন ... ওহ অপেক্ষা করুন ...
Mchl

উত্তর:


18

কয়েকটি পরামর্শ:

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

  2. সফ্টওয়্যার নিদর্শনগুলি শিখুন এবং অধ্যয়ন করুন । কিছু সাধারণ, সুপরিচিত কাজ সম্পাদনের জন্য সফ্টওয়্যার নিদর্শনগুলি চেষ্টা করা হয় এবং প্রমাণিত পদ্ধতিগুলি।

  3. অ্যাটাক স্ট্রাকচার অধ্যয়ন এবং বুঝতে প্রতিটি ধরণের ডেটা কাঠামোর জন্য উপযুক্ত ব্যবহার এবং পারফরম্যান্স বৈশিষ্ট্যগুলি শিখুন।

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

আপনাকে একবারে এই সমস্ত কিছু জানতে হবে না, তবে আপনার সময়ের সাথে সাথে এটি সমস্ত অধ্যয়ন করা উচিত


12

আমার পরামর্শটি হ'ল: উদ্বেগ বন্ধ করুন।

অভিজ্ঞতা হ'ল সেরা শিক্ষক, এবং আপনি কোড না লিখলে আপনি অভিজ্ঞতা পান না। এছাড়াও, খারাপভাবে পরিকল্পিত কোডটি হয় লিখিত যে মহান নকশা বেশী ভালো না

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

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


খারাপভাবে ডিজাইন করা লিখিত কোডের জন্য +1 অলিখিত লিখিত কোডের চেয়ে ভাল!
গ্র্যান্ডমাস্টারবি

এটি সত্যবাদিতার মতো শোনাচ্ছে, তবে তা নয়। খারাপভাবে ডিজাইন করা কোড যা এটি বোঝাতে চেয়েছিল সেটি ভাল ডিজাইন করা অলিখিত কোডের চেয়ে ভাল। যাইহোক, কোডটি যদি খারাপভাবে ডিজাইন করা হয়, তবে এটি সম্ভবত এটি করার মতো যা করবে তা কতটা সম্ভব?
ম্যাট এলেন

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

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

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

3

এটি প্রারম্ভিক প্রোগ্রামারগুলির সাথে একটি সাধারণ সমস্যা। সবকিছু নিখুঁত হতে হবে ভেবে নিজেকে পঙ্গু করবেন না। কোনও প্রকল্প শেষ না করার সবচেয়ে দৃ way়তম উপায়। একজন বিকাশকারী হিসাবে শেখার জন্য সবচেয়ে গুরুত্বপূর্ণ দক্ষতার একটি হ'ল নিখুঁত এবং যথেষ্ট ভাল পার্থক্য । আপনার তৈরি প্রতিটি সিস্টেমের উন্নতি হতে পারে তা গ্রহণ করুন। আপনার প্রকল্পগুলি সমাপ্ত করার উপর ফোকাস করুন। শেষ করার পরে, আপনি ফিরে যেতে পারেন এবং সেগুলিতে উন্নতি করতে পারেন। সর্বোপরি আমাদের সংস্করণ ২.০ এর কেন রয়েছে।


ভাল কল! কিছু ভাল হতে পারে তা জেনে রাখা ভাল শুরু।
ওজ

2

আমার কি একবারে চেষ্টা করার এবং কিছুটা শিখতে হবে?

আমি আশা করি না. অন্যদিকে, আপনার পুরো সময়টি শিখতে হবে এবং উন্নতি করা উচিত

বই পড়ুন, কোর্স করুন, যোগ্য হন, এতে কাজ করুন এবং আপনার উন্নতি করা উচিত।


2

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

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

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


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

2

রিফ্যাক্টরিং বইটি একবার দেখুন : মার্টিন ফওলারের লেখা কোডটির উন্নতকরণ । কোড পঠনযোগ্যতা উন্নত করতে এবং এর রক্ষণাবেক্ষণের উন্নতি করতে জটিলতা হ্রাস করার জন্য আপনাকে প্রথমে আপনার কোডটি রিফেক্টর করা উচিত।

আপনি যখন নিজের কোডটি রিফ্যাক্টর করেন, আপনি ইতিমধ্যে ডিজাইন প্যাটার্নস , এনক্যাপসুলেটিং কোড ইত্যাদি ব্যবহার করছেন

আমি এই বিষয়টি সম্পর্কে যা পড়েছি এটি সেরা বইগুলির মধ্যে একটি। এটি প্রচুর দরকারী রেসিপি সরবরাহ করে।


2

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

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

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

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


1

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

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

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


0

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

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


0

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

অন্যান্য প্রোগ্রামারদের সাথে আলোচনা হ'ল সত্যিকারের উন্নতির জন্য আমি জানি কেবলমাত্র (যদি না আপনি ভাগ্যক্রমে অন্যান্য উত্সর্গীকৃত প্রোগ্রামারদের সাথে একসাথে কাজ করার পক্ষে থাকেন)।

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