প্রোগ্রামিং করার সময় আপনি কতবার আপনার কোড চালাচ্ছেন এবং পরীক্ষা করেন? [বন্ধ]


16

বিশেষত সিতে স্ক্র্যাচ থেকে নতুন কোড লেখার সময়, আমি নিজেকে ঘন্টার পর ঘন্টা, এমনকি মাঝে মাঝে বিন্যাসের সিনট্যাক্স চেক ব্যতীত কোনও সংকলক না চালিয়ে কোড লিখতে দেখি।

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

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

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


3
পুরো সাবরুটাইন লিখতে আপনার ঘন্টা বা দিন লাগবে?

1
@ থরবজর্ন সাবরুটাইন প্রায় 999 লাইন দীর্ঘ এবং এটি অবরুদ্ধ: #define h for(int c=y-3; y; c++/(randomTypeIDefinedEarlier)s*(float)4*(lol)sin((helloWorld)mysub(2,1,++a,*(r+z))); goto xkcd)এবং এটি কেবল একটি লাইন।
মতিন উলহাক

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

উত্তর:


6

এটি আসলে আপনি যে প্রকল্পে কাজ করছেন তার দিকের উপর নির্ভর করে।

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

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

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


63

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

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


12
"... যথেষ্ট স্মার্ট নয় .." এর জন্য উপনোট আমি বেশ কিছুদিন ধরে সেভাবে অনুভব করেছি।
উত্তোলন করা হয়েছে

4
আপনার এল 2 ক্যাশে সম্পর্কে কি?
মতিন উলহাক

আমি এটিকে উজ্জীবিত করতে যাচ্ছিলাম, তবে স্কোরটি 42 এ ...
ওয়েইন ওয়ার্নার

নতুন মডেলগুলিতে অনেক বড় এল 1 ক্যাশে রয়েছে। তুমি কখন কিনেছ? আপনি একটি হার্ডওয়ার আপডেটের জন্য যেতে চাইতে পারেন।
পিটার আজতাই

ভাল মডেলের বয়স এতটা নয় যে এটি "বাজেট" লাইন ছিল। :(
dss539

17

আমি আমার প্রয়োগের কোডটি লেখার আগে আমার পরীক্ষা লিখতে চাই। আমি তিনটি কারণে এটি পছন্দ:

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

2
"আমি জানি আমি যখন পরীক্ষার সমস্ত ক্ষেত্রে পাস করি তখন আমি প্রয়োগের কোডটি লেখার কাজ শেষ করি।" - আপনি প্রয়োজনীয় পরীক্ষার সমস্ত মামলা লিখেছেন কিনা তা আপনি কীভাবে নির্ধারণ করবেন?
dss539

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

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

1
@ স্টিভ ৩১৪: এএফাইক, আনুষ্ঠানিকভাবে কোনও অ্যালগরিদমের যথার্থতা প্রমাণ করার সময়, আপনি ঠিক এবং সংক্ষিপ্তভাবে প্রত্যাশিত যথার্থতা কী তা নির্দিষ্ট করে দেন। যদিও আপনি একটি ভাল বিষয় তুলে ধরেছেন, "সংশোধন" এর সংজ্ঞা আসলে সঠিক হতে পারে না ।
ডেভিড ওয়েজার

1
@ dss539, এটি ব্যবহারের ঘটনা থেকে আসে যা প্রোগ্রামটি বাস্তবায়নের উদ্দেশ্যে রয়েছে।

4

আমি নিজেকে ঘন্টার পর ঘন্টা কোড লিখছি, এমনকি মাঝে মাঝে বিন্যাসের বাক্য বিন্যাস ছাড়াই কিছু সংকলক চালাচ্ছি না।

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

আমি কোডের বড় অংশগুলি সাবধানে লিখতে এবং পুরোপুরি পরীক্ষার ঝোঁক তখনই যখন আমি নিশ্চিত যে কোডটি আমার মাথার প্রবাহকে বিশ্লেষণ করে যা করার কথা বলে তা করে।

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

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


3

নিম্নলিখিত সংস্থাগুলির মধ্যে একটি সন্তুষ্ট হলে আমি সংকলন এবং পরীক্ষা করি:

  • শেষ সংকলনটি 15 মিনিট আগে হয়েছিল
  • সর্বশেষ সংকলনটি 25 লাইন আগে ছিল
  • নতুন ফাংশন / সাবরুটাইন প্রয়োগ করা হয়েছে
  • গুরুতর পরিবর্তন
  • নতুন বৈশিষ্ট্য (বা একটি বাগ বৈশিষ্ট্য হিসাবে ছদ্মবেশযুক্ত)
  • বাগ ফিক্স (একটি "বৈশিষ্ট্য" সরানো হয়েছে)
  • আমি উদাস

1

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

অন্যদিকে, আমি যদি লিস্পে কোডিং করছি, আমি প্রতিটি ফাংশন টাইপ করার পরে চেষ্টা করব।

যদি আমি হাসকেলে কোডিং করছি তবে আমি সাধারণত প্রতিটি ফাংশনের পরে কোনও ধরণের ত্রুটি ধরার জন্য একটি সংকলন করব এবং সবকিছু শেষ হয়ে যাওয়ার পরে কোডটি চালাব।


1

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


1

এক ঘন্টা তিনবার, এটি প্রয়োজন বা না হোক।

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


1

আমার পক্ষে এটি কতটা লিখব তা নয়। আমি এটি পরীক্ষা না করেই সহজ কোডের কয়েক হাজার লাইন লিখতে পারি। তবে আমি যখন আরও কঠিন কোড লিখছি তখন প্রতিটি ক্রিয়াকলাপের একটি সমন্বিত সেট লেখার পরে আমি স্বতন্ত্রভাবে পরীক্ষার প্রবণতা রাখি।

কখনও কখনও যদিও, আপনার কোডটি দৌড়াদৌড়ি দেখানো একটি বিশাল প্রেরণাদায়ী উত্সাহ, যখন আপনি কিছুক্ষণ চালনা করেন না এটি কাজ করে দেখলে ভাল।


0

আমার জন্য; -
স্বল্প টাইমলাইন (ভাবার খুব বেশি সময় নয়) - কোড লিখুন, সংকলন করুন, পরীক্ষা করুন। ডিবাগ
পর্যাপ্ত সময় - যখন (সম্পন্ন) small ছোট কোড লিখুন, সংকলন করুন test, পরীক্ষা করুন, ডিবাগ করুন


আমি দেখতে পেয়েছি যে প্রাক্তনটি পরবর্তীকালের চেয়ে বেশি সময় নেয়: আপনার যদি খুব ছোট পরীক্ষা / লেখার লুপ থাকে তবে আপনার ডিবাগ করার আরও দরকার আছে।
ফ্র্যাঙ্ক শায়ারার

হতে পারে. তবে সংক্ষিপ্ত সময়রেখার অর্থ গাধা আগুনে জ্বলতে থাকা এবং ম্যানেজারের এমন প্রতিবেদন দরকার যা বলে যে কোনও কাজ 100% সম্পন্ন হয়েছে।
মনোজ আর

0

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


0

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

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