"চালাক" কোডটি এড়াতে কীভাবে নিজেকে প্রশিক্ষণ দেবেন? [বন্ধ]


75

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

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

আমি কি করতে পারি "cleverish" কোড লিখতে প্রবণতাকে প্রতিরোধ এবং যখন উচিত ঘণ্টা রিং যে আমি এটা ভুল করছি ?

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


5
কিছুটা সামান্য বিষয়, তবে thedailywtf.com/Articles/…

@ জো: এটি খুব অনন্য বিষয়, ধন্যবাদ! আমি নিবন্ধটি পড়েছি তবে এটি এখনই নতুন করে আবিষ্কার করে আনন্দিত pleasure
ড্যান

33
প্রচুর চালাক কোড ডিবাগ করুন ... এর কৌশলটি করা উচিত।
ড্যান অলসন

@ জো নিবন্ধের ডাটাবেসের লিংকটির জন্য মরতে হবে।
জান্নো

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

উত্তর:


54

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

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

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

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

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

কখনও কখনও, পিয়ার পর্যালোচনা আপনার নিজের কাজের ভাল চেহারা পাওয়ার সেরা উপায়।


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

7
কোনও কোড পর্যালোচনা? Urk। আমি সমস্ত স্ব-ধার্মিক এবং ভয়াবহ কিছু লিখতাম, তবে আমি সেই পরিবেশেও কাজ করেছি। তারা সময়সাপেক্ষ এবং প্রত্যেকের পাছায় এক ধরনের বেদনা, তবে তারা প্রকল্পের হাত ধরে এবং আপনার নিজস্ব বিকাশের জন্য সত্যই মূল্যবান। যদি বিষয়টির "যদি আমাদের সম্ভবত কোড রিভিউ করা উচিত?" সর্বদা উপস্থিত হন, নিশ্চিত হন যে আপনি "হ্যাঁ হ্যাঁ!" এবং যদি তাদের নিজস্ব বাড়ানোর সময়সীমা নিয়ে নিন্দা না করা হয়, তবে আপনি যে অনানুষ্ঠানিক কোড-রিভিউ-লাইট সম্পর্কে নিশ্চিত নন কাজটি দেওয়ার জন্য আপনি সহ-কর্মীদের সম্মান করতে চাইতে পারেন।
ব্লেয়ারহিপ্পো 11:11

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

2
আহারে. উত্তেজনাপূর্ণ শোনায় - সমস্ত ভাল এবং খারাপ ধারণার সাথে সেই শব্দটি এটি বহন করে। :-) শুভকামনা, সাথী; আশা করছি আপনি দুর্দান্ত কিছু শুরুর দিকে এসেছেন।
ব্লেয়ারহिप्পো

8
@ ব্লেয়ার হিপ্পো: আমি স্রেফ আপনার পরামর্শ অনুসরণ করেছি, শান্ত হয়েছি এবং দয়া করে আমার সাথে অনানুষ্ঠানিক পর্যালোচনা করার জন্য আমার পরিবর্তনের দ্বারা প্রবর্তিত সমস্যাটির দিকে নির্দেশকারী সহকর্মীকে জিজ্ঞাসা করেছি এবং তিনি তাতে সম্মত হয়েছেন। এটি আমাদের কথোপকথন থেকে কিছু বিশ্রীতা অপসারণ করতেও সহায়তা করেছিল (যেমন "আপনি জটিল কোড লেখেন এবং আমাকে এটি ঠিক করতে হবে ..")। ধন্যবাদ!
ড্যান

20

সবচেয়ে ভাল কাজটি হল ব্রায়ান কার্নিগানের সর্বোচ্চটি মনে রাখা:

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


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

13
প্রতিটি কোড বানরের হৃদয় দিয়ে জানতে হবে এমন সর্বাধিকের জন্য +1, কিন্তু -1 এটি কীভাবে তার নিজের কাজে প্রয়োগ করতে পারে সে সম্পর্কে কোনও অন্তর্দৃষ্টি না দেওয়ার জন্য 1 সুতরাং এটি কোনও তীর ক্লিক করে সমান হয়।
ব্লেয়ারহিপ্পো

2
দুর্দান্ত উক্তি, তবে আসলে ওপি-র প্রশ্নের উত্তর নয়।
জিম জি।

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

2
-১: অল্পের মধ্যেই ওপি-র প্রশ্নের উত্তর দেয় না।
টমাস এডিং

15

যে কোনও তাত্পর্যপূর্ণ সফ্টওয়্যার সমস্যার জন্য সাধারণত কমপক্ষে তিনটি সমাধান রয়েছে: সুস্পষ্ট উপায়, একটি স্পষ্টতই জটিল উপায় (চালাক) এবং একটি স্পষ্টত নয় এমন সহজ উপায় (মার্জিত)। লেখক সম্পর্কে একটি উদ্ধৃতি এখানে প্রযোজ্য:

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

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

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


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

9

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


আমি যখনই সময় পাই তখন আমি অবশ্যই নিজের উপর চাপিয়ে দেওয়ার চেষ্টা করি।
জান্নো

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

6

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

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

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

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

আমি আগে মুক্ত মন না থাকার জন্য দুঃখ প্রকাশ করি এবং আশা করি আমি এই জাতীয় "চালাক" জুনিয়র বিকাশকারীকে নিয়ে এত কঠোর না হত।

আমার বক্তব্যটি হ'ল "চালাক" কোডটি সন্দেহ করা উচিত, তবে আমাদের এর বিরুদ্ধে ক্রুসেড করা উচিত নয় কারণ এটি সৃজনশীলতা এবং নতুনত্বকে দমন করতে পারে।

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


6

যদি 20% (আপনার% আলাদা হতে পারে) বা আপনার যুক্ত হওয়া লাইনগুলির আরও বেশি ডকুমেন্টেশন হওয়া দরকার - তবে সময় ফিরে এসে পুনর্বিবেচনা করার সময় এসেছে ।

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


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

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

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

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

@ ডেডালনিক্স - নিখুঁত কোড কখনও আসল বিশ্বে ব্যবহারিক সমাধান হয় না।
জেফো

4

আমি কিছু চালাক চেষ্টা করে প্রতিহত করতে পারি না।

তাই আমি এটি খেলনা প্রকল্পে, নিজের সময়ে, বাড়িতে do

অভিনবত্বটি বন্ধ হয়ে গেলে - সমস্যার সমাধান হয়।


3

আমি বিশ্বাস করি যে আপনার কোডটি খুব "চালাক" কিনা তা খুঁজে বের করার একটি উপায় হ'ল একটি পদক্ষেপ পিছনে ফিরে নিজেকে নীচে জিজ্ঞাসা করুন:

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

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


সমস্যা সমাধানের ক্ষেত্রে প্রয়োগ করার সময় আমি এটি "রাবার ডাকিং" শুনেছি; যখন স্টাম্পড করা হয়, তখন কারও কাছে সমস্যাটি বোঝানোর চেষ্টা করুন যিনি এ সম্পর্কে কিছুই জানেন না (যেমন, আপনি জানেন, আপনার রাবারের ডাকি) এবং দেখুন সমাধানটি আপনার কোলে dropোকে না if আমার মনে হয় এটি এটির জন্যও কার্যকর হবে।
ব্লেয়ারহিপ্পো

2

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

সমস্যার চতুর সমাধান চমত্কার হতে পারে, যতক্ষণ না আপনি সেগুলি ডিবাগ বা প্রসারিত না করে। কখনও কখনও এটি একমাত্র সমাধান। আপনি কী করে ঠিক কীভাবে এটি বর্ণনা করে এবং এটি কী করে তা যদি আপনি সঠিকভাবে বর্ণনা করতে পারেন তবে চতুর সমাধানগুলি গ্রহণযোগ্য হতে পারে।

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


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

@ ব্লায়ার হিপ্পো এইচএ! "চূড়ান্ত বিড়ম্বনা পরীক্ষা" আমি এটি পছন্দ করি।
ফিলিপ

2

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

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

যদি আপনি গণিতে থাকেন (এবং এটি ভাষা অজ্ঞেয়বাদী ) তবে আপনার জন্য প্রকল্পের এলিউর রয়েছে

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

যদি কিছুই মানায় না, কেবল নিজের বিদ্রূপের কাঠামো শুরু করুন :-)


2

আপনি যখন ভাব প্রকাশের সাথে সেই নতুন কৌশলটি প্রদর্শন করতে বা তিনটি পৃথক পদ্ধতি সাধারণকরণ করার প্রয়োজন তখন কি আপনি সেই অনুভূতিটি জানেন?

না

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


আমি মনে করি এটি তাদের হতাশ করার সম্ভাবনা বেশি এবং তারা এই নোটিশটি লিখেছেন এমন নুবুকের চেয়ে তাদের কোডটি আরও ভাল এবং মার্জিত হবে think এটিকে বজায় রাখা শক্ত করার উদ্দেশ্যে কেউ কোড লেখেন না।
সারা

2

আমি মনে করি বিষয়টি ভালভাবে নির্বাচিত হয়েছে। পার্লের একটি লাইন লিখতে "শীতল" যা একবারে দশ হাজার কাজ করে, তবে এটি যখন আপনাকে আবার দেখা করতে হয় তখন এটি স্তন্যপান করে।

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

সূক্ষ্ম দানযুক্ত অপরিহার্য কোডটি মোটা দানাদার পরিকল্পনাগুলি বাস্তবায়নের জন্য কাজ করে - যা নথিভুক্ত করা দরকার। একটি তাত্ক্ষণিক 3-লাইনের রোডম্যাপ মন্তব্য করবে তখন আমি পদ্ধতির 50 টি লাইনের মধ্য দিয়ে পড়তে চাই না।

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

এবং মন্তব্যগুলি কোনও বইয়ের সিডেনোটসের মতো কাজ করতে পারে, যখন আমাদের মূল পাঠ্যের দাবিটি পিছনে না ফেলেই পিছনে যুক্তি প্রক্রিয়াটি ব্যাখ্যা করা দরকার।

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

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

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


1

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

-1 এর আলোকে সম্পাদনা করুন:

অনেক চাঁদবার আগে, আমি একই পরিস্থিতিতে ছিলাম - আমার একজন সাহেব ছিলেন যিনি প্রতিবারই ডেলফিতে পয়েন্টার বা 'উইথ কনস্ট্রাক্ট' ব্যবহার করে ক্রিংজ করতেন, অন্য একজন যিনি আমার সমস্ত বুলিয়ান শর্টকাটারিং বন্ধ না করা হলে আমাকে বরখাস্ত করার হুমকি দিয়েছিলেন 0-1 এবং সর্বত্র একক বর্ণের ভেরিয়েবল ব্যবহার করে।

আমি শিখেছি কারণ আমি কেন জিজ্ঞাসা করেছি এবং তারা ব্যাখ্যা করার জন্য সমস্যাটি নিয়েছিল কারণ তারা ভেবেছিল আমার কিছুটা হতে পারে - LOL ....


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

1

আমি কি দেখানোর দরকার মনে করি? কোন না আর. আমি কীভাবে এটি পেরেছি? বেশিরভাগ লোকের মতো অন্য কোনও খারাপ অভ্যাসটি গত হয়ে যায় ... যথাযথ কৌশলগুলির সচেতন এবং ইচ্ছাকৃত অনুশীলন। আপনি এটি যথেষ্ট করেছেন আপনি সেরা অনুশীলনের মান বুঝতে পারবেন এবং তাদের অবিচ্ছিন্ন ব্যবহারের মাধ্যমে আপনি ভাল অভ্যাস বিকাশ করতে পারবেন।

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

টিএলডিআর: আপনি একা নন। দক্ষতার স্বীকৃতি স্মার্ট উপায়ে সমস্যা সমাধানের উপ-উত্পাদন হিসাবে সর্বোত্তমভাবে অর্জন করা হয়।


0

আমার জন্য, অত্যধিক-চতুর কোড প্রায়শই আজকের প্রয়োজনীয়তার উপর দৃষ্টি নিবদ্ধ না করে কাল্পনিক ভবিষ্যতের প্রয়োজনীয়তাগুলি সমাধান করার চেষ্টা করে। বড় ফাঁদ!

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

কোড পর্যালোচনা সাহায্য। অন্যান্য লোকদের "চতুর" কোড ঠিক করতে বছর ব্যয় করা সহায়তা করে। আজ ক্লায়েন্টকে সত্যিকারের যা প্রয়োজন তার প্রতি দৃষ্টি নিবদ্ধ রাখা সহায়তা করে।

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


-2

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

  • প্র্যাকমেটিক প্রোগ্রামার
  • কোড সম্পূর্ণ
  • সাফ কোড

এবং অন্যগুলি, আপনি যে প্রযুক্তি ব্যবহার করেন তার উপর নির্ভর করে।


-2

কেবল YAGNI মনে রাখবেন - আপনার প্রয়োজন হবে না

প্রয়োজনীয় মনে না করা অবধি প্রোগ্রামারটির কার্যকারিতা যুক্ত করা উচিত নয় ...

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

যারা YAGNI পদ্ধতির পক্ষে ছিলেন তাদের মতে, কোডটি লেখার প্রলোভন যা এই মুহুর্তে প্রয়োজনীয় নয়, তবে ভবিষ্যতে হতে পারে, নিম্নলিখিত অসুবিধাগুলি রয়েছে:

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

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