যখন আপনার কোডটি সহজভাবে পরীক্ষা করতে দীর্ঘ সময় লাগে আপনি কীভাবে কার্যকরভাবে প্রোগ্রাম করবেন?


16

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

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


আপনি কি আইডিই ব্যবহার করছেন?
Woot4Moo

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

একটি ভাষা ব্যবহার করুন যার একটি রেপেল রয়েছে।
রবার্ট হার্ভে

আপনার কি এমন সহকর্মী রয়েছে যা থেকে আপনি জিজ্ঞাসা করতে এবং শিখতে পারেন?
ব্যবহারকারী 985366

উত্তর:


25

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

একটি বাহ্যিক সার্ভারের সাথে ইন্টারঅ্যাকশন প্রয়োজন এবং প্রমাণীকরণ, সফ্টওয়্যার আর্কিটেকচার বা জটিলতার কারণে অটোমেশন প্রয়োগ করতে অক্ষম।

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

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


12

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

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

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


2
+1 টি। এমন কোনও সমস্যা নেই যা পর্যাপ্ত পরিমাণ শেল স্ক্রিপ্ট দিয়ে সমাধান করা যায় না।
টম অ্যান্ডারসন

1
আমি এমন দলে থাকব না যা বেগ গতি বাড়ানোর বিষয়ে চিন্তা করে না।
কেভিন ক্লাইন

); - abst অনেক স্তরে ব্যতীত @Tom Er, শেল স্ক্রিপ্ট
মধ্যে Darien

নাহ, আপনি কেবল একটি শেল স্ক্রিপ্ট লিখেছেন যা অন্যান্য শেল স্ক্রিপ্টটি মোড় করে। তারপরে ঠিক সেই একটি শেল স্ক্রিপ্ট আছে। আমাকে বিশ্বাস কর.
টম অ্যান্ডারসন

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

8

স্বয়ংক্রিয় পরীক্ষাগুলি পর্যালোচনা এবং বোঝার জন্য প্রতিস্থাপন নয় are

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


5

আপনি ইতিমধ্যে উত্তরটি দিয়েছেন: I usually make a lot of syntax errors and logic errors

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

পিএইচপি থেকে জাভাতে যাওয়ার সময় আমারও একই জিনিস ছিল। আমাকে কিছু ভেরিয়েবল মুদ্রণের পরিবর্তে ডিবাগ করতে শিখতে হয়েছিল এবং ব্রাউজারে এফ 5 টিপতে হয়েছিল ...


2
আমরা সকলেই সময়ে সময়ে বোকা ভুল করি, সেগুলি কেবল সময় এবং অভিজ্ঞতার সাথে কম ঘটে।
ম্যাপেল_শ্যাফ্ট

@ ম্যাপেল_শ্যাফ্ট সত্য, তবে যখন তিনি মনে করেন make a lot ofএটির উন্নতি করার জন্য তার শক্তি বিনিয়োগ করা উচিত বলে মনে হচ্ছে
ওয়ারেনফেইথ

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

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

@ অ্যান ননিমাস: আপনি কি লজিক্যাল ত্রুটি বোঝাতে চাইছেন? সিনট্যাক্স ত্রুটিগুলি আপনার আইডিই দ্বারা নেওয়া উচিত (আদর্শ - আপনি যদি গতিশীলভাবে উত্পন্ন কোডের সাথে কাজ করে থাকেন তবে সংকলনের সময় সেই সিনট্যাক্স ত্রুটিগুলি নেওয়া হবে না)।
হতাশ

4

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

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


2

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


3
আপনার "এক্সচেঞ্জ" এবং "ট্রেডিং" সফ্টওয়্যার ইঞ্জিনিয়াররা একটি অনন্য জাত। আমার বন্ধুর এমন একটি সংস্থার জন্য কাজ করার একাধিক মানসিক ব্রেকডাউন ছিল। আমি কখনও শুনতে পাই না যে ভাল জিনিসগুলি সফ্টওয়্যার শিল্পের সেই কুলুঙ্গি থেকে বেরিয়ে আসে।
maple_shaft

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

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

2

অংশ পরিক্ষাকরণ; মোক অ্যাপ্লিকেশন / সিমুলেটর।

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

সঠিকভাবে ব্যবহার করা হলে, এই সরঞ্জামগুলি নিশ্চিত করবে যে আপনি বাহ্যিক সিস্টেমের কাছাকাছি কোথাও যাওয়ার আগে আপনি 99.9% নিশ্চিত যে আপনার কোডটি ব্যর্থ হলে এটি বাহ্যিক সিস্টেমে / পরিবেশের পরিবর্তনের কোনও কারণ যা এটি আপনার নিজের কোডে কোনও বাগ নেই not

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

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


1

আমি সাধারণত প্রচুর সিনট্যাক্স ত্রুটি এবং যুক্তি ত্রুটি করি

হয়তো লিন্টার ব্যবহার আপনাকে এখানে কিছুটা সহায়তা করতে পারে।

আমি আমার আগের নিয়োগকর্তার সাথে একই পরিস্থিতিতে ছিলাম। আমাদের কোড বেসটি সত্যই বিশাল ছিল এবং আমার কোডগুলিতে যে কোনও পরিবর্তন করতে, সংকলন করে .classএকটি ডেভ-সার্ভারে ফাইলগুলি প্রতিস্থাপন করে তারপরে পুনরায় আরম্ভের স্ক্রিপ্টের সাহায্যে ডেভ-সেভার পুনরায় আরম্ভ করুন। এবং আমার হতাশার জন্য, আবার ডেভ-সার্ভারটি পেতে প্রায় আধ ঘন্টা সময় লাগবে।

পরে আমি জানতে পারি যে ডি-সার্ভারের রিমোট ডিবাগ করাও সম্ভব ছিল।

তাই আমি আমার প্রক্রিয়াটি অপ্টিমাইজ করতে যা করেছি তা এখানে

  • দূরবর্তী ডিবাগিংয়ের প্রথম প্রাথমিক রাউন্ড, এটি আমাকে ভেরিয়েবলের সঠিক কোড প্রবাহ এবং সঠিক মান / রাজ্যগুলি দেখতে দেয়।

  • কীভাবে এবং কী পরিবর্তন করব আমি তা পরিকল্পনা করছি।

  • পরিবর্তনগুলি করা এবং তারপরে ভিন্নতাগুলির সাথে তুলনা করা

  • ল্যাটার ব্যবহার করে বা সংকলন করে ভুল ক্যাশে করা হচ্ছে।

  • .classফাইলগুলি প্রতিস্থাপন এবং পুনরায় চালু করে হট ফিক্স দেওয়া ।

কখনও কখনও আমি আবার কোড প্রবাহ চেক করতে এবং মান / রাজ্যগুলির জন্য চেক করতে নরক প্রচুর লগ স্টেটমেন্টও অন্তর্ভুক্ত করব। এটি আমাকে অনেক সাহায্য করেছিল।

এছাড়াও ভাল অটো-জটিলতায় আইডিই ব্যবহার করা টাইপগুলি হ্রাস করতে ব্যাপক সহায়তা করতে পারে।

আশাকরি এটা সাহায্য করবে.

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