আপনি যে প্রোগ্রামিং অনুশীলনটি একবার পছন্দ করেছিলেন সে সম্পর্কে আপনি নিজের মতামত বদলেছেন? [বন্ধ]


99

আমরা যখন প্রোগ্রাম করি, আমরা সকলেই অনুশীলন এবং নিদর্শনগুলি বিকাশ করি যা আমরা ব্যবহার করি এবং নির্ভর করি। তবে সময়ের সাথে সাথে, আমাদের বোঝাপড়া, পরিপক্বতা এবং এমনকি প্রযুক্তির ব্যবহারের পরিবর্তনের সাথে সাথে আমরা বুঝতে পেরেছি যে কিছু অনুশীলন যা আমরা একসময় দুর্দান্ত বলে মনে করি তা হয় না (বা আর প্রয়োগ হয় না)।

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

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

সম্প্রদায়ের কাছে আমার প্রশ্নগুলি, আত্ম-উন্নতির চেতনায়, হ'ল:

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

উত্তর:


159


//Coming out of university, we were taught to ensure we always had an abundance 
//of commenting around our code. But applying that to the real world, made it 
//clear that over-commenting not only has the potential to confuse/complicate 
//things but can make the code hard to follow. Now I spend more time on 
//improving the simplicity and readability of the code and inserting fewer yet 
//relevant comments, instead of spending that time writing overly-descriptive 
//commentaries all throughout the code.



+1 আমি এই একই উত্তর পোস্ট করতে চলেছিলাম। আমি কয়েক সপ্তাহ আগে একটি সংরক্ষণাগার ডিস্কে আমার পুরানো প্রোগ্রামিং অ্যাসাইনমেন্ট পেয়েছি। সব দেখতে একরকম লাগছিল। কোড লাইনের মন্তব্যে লাইনের প্রায় 1: 1 অনুপাত ছিল।
মাইকেল মাউসা

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

5
কোড কমপ্লিটের কাছে মন্তব্য করার ভাল টিপস এবং এটির ব্যাক আপ করার জন্য ডেটা রয়েছে।
টমাস

20
কোডগুলি কেন এটি করে তা (যদি এটি সুস্পষ্ট না হয়), কোড কী করে না তা বর্ণনা করার জন্য মন্তব্য ব্যবহার করা উচিত । কারাম্যাকের ম্যাজিক নম্বর 0x5f3759df এর মতো একটি ক্রেজি বিট টুইডলিং / ল্যাঙ্গুয়েজ হ্যাকের সম্ভাব্য ব্যতিক্রম।
ক্রিস সিমন্স

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

117

একক রিটার্ন পয়েন্ট।

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

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


4
আমি সম্মত হই, যখন ডেটা ধরণের সাথে মিলিত হয় যা স্বয়ংক্রিয়ভাবে নিজেকে পরিষ্কার করে দেয়, যেমন অটোপ্ট্র, স্কোপড_পিটার, সিকম্প্রিটি, ইত্যাদি
i_am_jorf

4
কোড পরিষ্কার আপ কি চেষ্টা {} পরিশেষে {} এর জন্য হয়
banjollity

@ ব্যাঞ্জলিটি: এমন ভাষা ব্যতীত যা শেষ পর্যন্ত support support সমর্থন করে না} এবং মনে রাখবেন যে এমনকি যে ভাষাগুলিও এটি সমর্থন করে, অবশেষে exec exec কার্যকর করার নিশ্চয়তা দেওয়া হয় না।
ক্রিস কে

4
@ ব্যাঞ্জলিটি, ক্রিস: সি ++-তে, ধবংসকারী কীসের জন্য ক্লিনআপ হ'ল এবং চরম পরিস্থিতিতে (প্রস্থান (), একজন ধ্বংসকারী যে স্ট্যাক আনইন্ডিংয়ের সময় ব্যতিক্রম ছুঁড়ে ফেলেছে, আপনার শক্তি কেটে কাঠবিড়ালি) চালানোর গ্যারান্টিযুক্ত।
ডেভিড থর্নলি

4
রাজি। নেস্টেড শর্তসাপেক্ষে গার্ড ক্লজ ftw দিয়ে প্রতিস্থাপন করুন !
জোনিক

111
  • প্রথম চেষ্টাতে জিনিসগুলিকে নিখুঁতভাবে কোড করার চেষ্টা করা।
  • কোডিংয়ের আগে নিখুঁত ওও মডেল তৈরি করার চেষ্টা করছেন।
  • নমনীয়তা এবং ভবিষ্যতের উন্নতির জন্য সবকিছু ডিজাইন করা।

এক কথায় ওভাররেঞ্জাইনারিং


6
অপেক্ষা করুন, আমি সর্বদা প্রথম চেষ্টাতেই ঠিক পাই। :)
i_am_jorf

18
আসল অর্থ হ'ল প্রথমবার এটি সুস্পষ্টভাবে ভুল করে বন্যের মধ্যে ফেলে দেওয়া। তারপরে, যখন লোকেদের জিম্পড সংস্করণে ব্যবহার করা হয়, তখন অহঙ্কারী শোম্যানশিপের সাথে ঝাঁপিয়ে পড়ুন এবং অতিরিক্ত গৌরব কাটার জন্য বাগ / অদক্ষতা ঠিক করুন! ;)
এরিক

7
@ জেফামফোন - না, কেবল জোন স্কিটি প্রথমবার এটি পেয়েছে।
জর্ডান পারমার

আমি "অত্যধিক রক্ষণাবেক্ষণ" শব্দটি পছন্দ করি
নীলভার্ট নভাল

@ জেফামাফোন - আমি সর্বদা প্রথম চেষ্টা করেও এটি পেতে পারি। তবে আরও প্রচেষ্টা আমার যা প্রয়োজন তা দেয় :)
umbr

78

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


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

4
আমি ব্যতীত একই কাজটি করি: fooTextBox এবং স্ট্রিংগুলি কেবল আশাকরি প্রত্যাশিত: সংখ্যাঅফেন্টারি => ইনট, ইসগ্র্যাট =>
বুল

হাঙ্গেরীয় স্বরলিপি থেকে মুক্তি পাওয়ার জন্য +1। আমি rball সাথে একমত; fooTextBox, fooS सर्विस, fooString যখন এর সত্যই প্রয়োজন হয়।
ব্লু

4
@ উউব: আমি যুক্তি দেব যে সঠিক নামকরণের সাথে আপনার কোনও কিছুর উপসর্গের দরকার নেই।
কেনি মান

4
যাইহোক আপনি যা উল্লেখ করেছেন তা প্রকৃত হানিবি নয়।
অ্যান্টনি কার্থি

67

"নিখুঁত" আর্কিটেকচার

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

এবং এটি বাজে ছিল। আর্কিটেকচারের প্রযুক্তিগত বিশুদ্ধতা কেবলমাত্র ফলাফলের চেয়ে নিখুঁততার লক্ষ্যে আমার দেব দলকে ধীর করে দিয়েছিল এবং আমি প্রায় সম্পূর্ণ ব্যর্থতা অর্জন করেছি।

আমাদের কাছে এখন আরও সহজ কম প্রযুক্তিগত নিখুঁত আর্কিটেকচার রয়েছে এবং আমাদের বিতরণের হার আকাশ ছোঁয়া গেছে।


57

ক্যাফিন ব্যবহার। এটি একবার আমাকে জাগ্রত এবং এক গৌরবময় প্রোগ্রামিং মুডে রেখেছিল, যেখানে কোডটি আমার আঙ্গুল থেকে জ্বরে তরলতার সাথে উড়ে গেছে। এখন এটি কিছুই করে না, এবং এটি না থাকলে আমার মাথা ব্যথা হয়।


55
আপনার আরও বেশি কফি পান করা দরকার। যদি এটি কার্যকর না হয়, ধূমপান গ্রহণ করুন।
মুসিজিনিসিস

7
ব্র্যাড: পাইথন করার সময় আপনার দরকার নেই: xkcd.com/353
পিটার

দুর্দান্ত ক্রিসমাসের গল্পের রেফারেন্স! :-)
স্টিভ ইকোলস

4
আমি অভ্যাসটি ভেঙে আবার এটি বাছাই করেছিলাম, বেশ কয়েকবার (এটি এখন আমার তৃতীয় চক্র)। শীতের সকালে কোডিংয়ের মতো গরম গরম মগ কফির মতো কিছুই নেই!
ম্যাথু Iselin

15
"দেখে মনে হচ্ছে অ্যাম্ফিটামিনগুলি ছাড়তে আমি ভুল সপ্তাহটি বেছে নিয়েছি।"
শ্রীভাতসআর

50

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

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


6
আমি রিফ্যাক্টরিংয়ের সময় পুরানো কোডটি মন্তব্য করি তবে কেবলমাত্র আমি যাচাই না করে প্রতিস্থাপন কোডটি কাজ করে। নতুন সংস্করণটি সম্পূর্ণরূপে কার্যক্ষম হয়ে গেলে, আমি পুরানো মন্তব্য করা লাইনগুলি মুছুন।
মিউজবোল্লা

প্রকৃতপক্ষে - আমি কোডটিও মন্তব্য করি তবে কেবল কয়েক দিনের জন্য। যদি আমি ফিরে আসি এবং আমি বুঝতে পারি যে আমি কিছুটা মিস করেছি, নতুন কোডটি কাজ করার আগে এটি মুছে ফেলা হবে।
কলিন ম্যাকেয়ে

4
আমি বললাম মন্তব্য কোডটি একবার চেক করুন, তারপরে এটি মুছুন। এমন অনেক সময় আছে যখন আপনি কোডের বিভিন্ন বিট পরীক্ষা করেন, এবং আপনি ভাঙা কোডটি চেক করতে চান না ...
অসন্তুষ্টGoat

সংস্করণ নিয়ন্ত্রণটি আপনার বন্ধু হিসাবে উল্লেখ করা উচিত নয়।
ডেভিড থর্নলি

+1 টি আমি একজন প্রোগ্রামার যে মন্তব্য উপর জোর দেন সঙ্গে কাজ সব যে তিনি রি-ফ্যাক্টর ছিল বা পুনর্লিখিত কোডের। এটি আমাকে পাগল করে তুলবে কারণ কখনও কখনও আমি কী কাজ করছি তা সন্ধান করতে আমাকে 1k + লাইন ক্র্যাম্পের মাধ্যমে স্ক্রোল করতে হত।
ইভান প্লেস

46

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

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


31
আমি অঞ্চলকে ঘৃণা করি। আমার দলের লোকেরা এগুলিকে নিখরচায় ব্যবহার করে। আমি তাদের "ব্যাড কোড হাইডার্স" বলি।
rball

9
তারা অবশ্যই একটি কোড গন্ধ।
ফ্রাঙ্ক শ্যুইটারম্যান

4
আমি অঞ্চলগুলি ঘৃণা করি। আমি বর্তমানে কোডটি রক্ষণ করছি যেখানে ফাংশনটি প্রায় 500 টি লাইন এবং এটি পরিচালনা করতে, স্মার্ট বিকাশকারী 10 থেকে 15 অঞ্চলে কোডের কিছু অংশ রেখেছেন।
সমাধান

6
@ সমাধান যোগী: আমি মনে করি না অঞ্চলগুলি আপনার ক্ষেত্রে আসল সমস্যা :-)
এড এস

9
আমি মনে করি খুব কম ব্যবহার করা গেলে অঞ্চলগুলি ভাল হতে পারে।
গ্রেগরি হিগলি

39

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


4
বলুন যে আমার গ্রাহকের ... আমি কিছু বেহুদা স্পেসিফিকেশন ডকুমেন্ট :) "আমি একটি ক্রিস্টাল বল তাই আমি ঠিক জানি আমার লো-লেভেল নকশা 6 মাসে কেমন দেখাবে কিভাবে সঙ্গে একটি প্রোগ্রামার আছি" লেখার মাঝখানে আছি
ইগোর ব্রেজক

36

কখনও ক্রাশ হয় না।

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

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

আমার প্রিয় "ক্রাশ করবেন না" প্যাটার্নটি হ'ল:

public User readUserFromDb(int id){
    User u = null;
    try {
        ResultSet rs = connection.execute("SELECT * FROM user WHERE id = " + id);
        if (rs.moveNext()){
            u = new User();
            u.setFirstName(rs.get("fname"));
            u.setSurname(rs.get("sname"));
            // etc
        }
    } catch (Exception e) {
        log.info(e);
    }
    if (u == null){
        u = new User();
        u.setFirstName("error communicating with database");
        u.setSurname("error communicating with database");
        // etc
    }
    u.setId(id);
    return u;
}

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


ব্যবহারকারীর আপনাকে প্রকৃত ত্রুটি বার্তা দেওয়ার সম্ভাবনা কী, আপনার লগগুলি ইস্যুটি তৈরি করে? (এই বিশেষ ক্ষেত্রে খুব কম, তবে ব্যবহারকারীরা প্রায়শই ত্রুটি বার্তাগুলির উদ্ধৃতি দেয় না!) তারা কী সেগুলি পড়ে?
আরাফাঙ্গিয়ন

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

দুই লাইনে একটি নাল রেফারেন্সএক্সেপশন রয়েছে
ɔɯǝɹ

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

33

আমি ভেবেছিলাম যখনই আমি সেগুলিকে স্বীকৃতি দিয়েছি তখন ডিজাইনের ধরণগুলি প্রয়োগ করা বুদ্ধিমানের কাজ ।

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

একাধিক (খুব) বিভিন্ন ভাষা ব্যবহার করে আমার চোখ খুলেছে এবং আমাকে বুঝতে পেরেছে যে আমার সমস্যাগুলির ক্ষেত্রে অন্য লোকের সমাধানগুলি আমার ভুলভাবে প্রয়োগ করতে হবে না। রুবির মতো ভাষায় কারখানার প্যাটার্ন প্রয়োগ করা দেখে আমি এখন কাঁপছি ।


4
রুবি সম্পর্কে আমার অজ্ঞতা ক্ষমা করুন, তবে কেন আমরা এটির সাথে কারখানার প্যাটার্নটি ব্যবহার করব না?
মাইক চেম্বারলাইন

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

27

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

সত্যিই, যেকোন কিছুতে নির্দ্বিধায় মেনে চলা ক্ষতিকর হতে পারে।


22
এটি বার্নকালগুলির জন্য বেশ ভালভাবে কাজ করে।
মুসিজিনিসিস

পরীক্ষার কভারেজ সুবিধার আনুপাতিক হতে হবে। আপনি যা কিছু করেন তা আসলে একটি বেনিফিট দেখাতে হবে। 100% কভারেজ আপনাকে এত কিছু দিচ্ছে না। লাইফ সাপোর্ট / মিসাইল লঞ্চের দৃশ্যে নয় এমন ফর্মের মধ্যে 80 বা 90 এর থেকে পার্থক্য।
স্পেন

পরীক্ষার বিপরীতে ইউনিট পরীক্ষার উপর +1 নির্ভরতা।
প্রীত সংঘ

25

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

সম্পাদনা করুন: এই সত্তার ব্যতিক্রম অবশ্যই, যখন আমিই সবচেয়ে বেশি যত্নশীল (বা একটি গোষ্ঠীর জন্য স্টাইল সেট করার মতো অবস্থানে থাকি)। সেক্ষেত্রে আমি যা চাই তা করি!

(দ্রষ্টব্য যে এটি কোনও সামঞ্জস্যপূর্ণ শৈলী না থাকার মতো নয় I আমি মনে করি একটি কোডবেসে একটি ধারাবাহিক শৈলী পাঠযোগ্যতার জন্য খুব গুরুত্বপূর্ণ))


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

12
সেই দোকানের জন্য স্ট্যান্ডার্ড যাই হোক না কেন সর্বোত্তম কোড স্টাইলিং।
ডেভিড থর্নলি

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

5
@ কোরি: আপনার পুনরায় ফর্ম্যাট করা ফাইলের সংস্করণগুলির মধ্যে পার্থক্য দেখানোর জন্য কি আপনার সংস্করণ নিয়ন্ত্রণ সফ্টওয়্যারটির ক্ষয়ক্ষতি নেই?
স্টিভ মেলানিকফ

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

24

সম্ভবত সবচেয়ে গুরুত্বপূর্ণ "প্রোগ্রামিং অনুশীলন" যেহেতু আমি সম্পর্কে আমার মন পরিবর্তন করেছি সে ধারণাটি আমার কোডটি সবার চেয়ে ভাল। প্রোগ্রামারদের (বিশেষত newbies) এটি সাধারণ is


20

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

বাস্তবে, আমি কার্যক্ষমতার অনেকগুলি দুর্বল সংগঠিত বিট সহ সবেমাত্র একটি বিশাল নেমস্পেস তৈরি করেছি।

এখন, আমি কেবল তাদের প্রজেক্টে রেখেছি all সমস্ত সম্ভাবনার মধ্যে আমার এটি প্রয়োজন হয় না, এবং যদি আমি করি তবে আমি সর্বদা তাদের পুনরায় ব্যবহারযোগ্য কিছুতে পুনরায় ব্যবহার করতে পারি later কখনও কখনও আমি একটি সাধারণ সমাবেশে সম্ভাব্য উত্তোলনের জন্য // টোডো দিয়ে এগুলিকে পতাকাঙ্কিত করব।


12
। একটি ভাল উদ্ধৃতি (আমি মুহূর্তে মূল খুঁজে পাচ্ছি না) যা "এমনকি একটি জেনেরিক রুটিন তৈরি না হওয়া পর্যন্ত আপনি একই সমস্যা সমাধানের জন্য 3 বার প্রয়োজন থাকেন কথা ভাবি না লাইন বরাবর কিছু ছিল আছে
DaveR

9
"তিন স্ট্রাইক এবং ইউ রিফ্যাক্টর" - মার্টিন ফওলারের রিফ্যাক্টরিং । তিনটির বিধি , পৃষ্ঠা 58.
নিক ডানডৌলাকিস

20

আমি কোডডের চেয়ে বেশি ডিজাইন করছি। কিছুক্ষণ পরে, এটি বিশ্লেষণ পক্ষাঘাতে পরিণত হয়।


44
আমি মাঝেমধ্যে "আপনি যদি খুব বেশি চিন্তা করছেন বলে মনে করেন তবে থামুন এবং করুন phrase এই বাক্যটি আমি প্রার্থনা করি you যদি আপনি দেখতে পান যে আপনি খুব বেশি করছেন, থামুন এবং ভাবুন।"
নিল এন

এটি দুর্দান্ত, তবে খুব বেশি কত?
হামিশ গ্রুবিজন

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

15

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

কোনও অবজেক্ট কনস্ট্রাক্টরের ভিতরে কোনও ব্যবসার যুক্তি সম্পাদন করা। উত্তরাধিকার এবং ওভারলোডেড কনস্ট্রাক্টর তৈরির সক্ষমতা সহ রক্ষণাবেক্ষণকে কঠিন করে তোলে।


15

পরিবর্তনশীল / পদ্ধতি / টেবিল / নামগুলি সংক্ষেপিত করা হচ্ছে

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

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


হ্যাঁ, এই জাতীয় ঘোষণাগুলি পছন্দ করতে হবে: অকার্যকর Foo (x1, y, x2, y2, p, r, j) ... WTF ?!
এড এস

বা আরও খারাপ (এবং হ্যাঁ, আমি এটি আসলে দেখেছি), Foo(int arg0, String arg1, float arg2)ইত্যাদি
ম্যাক

14

সহায়ক পদ্ধতির একটি কাস্টম স্তর সহ এন্টারপ্রাইজ লাইব্রেরির মতো বিদ্যমান ডেটা অ্যাক্সেস উপাদানগুলিকে মোড়ানো।

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

14

১৯৮৪ সালে স্মলটালকের বিষয়ে পড়ার সময় আমি প্রথম অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের কথা শুনেছিলাম, তবে 1992 সালে সিফ্রন্ট সি ++ সংকলক ব্যবহার না করা পর্যন্ত আমার কোনও ভাষা অ্যাক্সেস ছিল না। অবশেষে ১৯৯৯ সালে আমি স্মলটালক ব্যবহার করতে শুরু করি। আমি অধীর আগ্রহে প্রত্যাশিত ছিলাম প্রযুক্তি, এবং এটি সফ্টওয়্যার বিকাশ সংরক্ষণ করতে পারে যে ধারণা কেনা।

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

আমি সময় পেলেই ক্লোজুরে কিছু কাজ করতে আগ্রহী, যা খুব সুবিধা দেয় না, যদিও এটি সঠিকভাবে বুঝতে পারলে এটি জাভা অবজেক্ট ব্যবহার করতে পারে। আমি oo মারা গেছে এমন কিছু বলতে প্রস্তুত নই, তবে ব্যক্তিগতভাবে আমি আগে যে ফ্যান ছিলাম তা নয়।


13

সি # তে, _notationব্যক্তিগত সদস্যদের জন্য ব্যবহার করা। আমি এখন এটি কুরুচিপূর্ণ মনে করি।

আমি তখন this.notationব্যক্তিগত সদস্যদের জন্য পরিবর্তিত হয়েছি , কিন্তু আমি এটি ব্যবহারে বেমানান ছিলাম, তাই আমি এটিও বাদ দিয়েছি।


29
আমি এখনও _ নোটেশন ব্যবহার করছি এবং মনে করি এটি দুর্দান্ত।
আরনিস Lapsa

4
আমি নোটকে ঘৃণা করি; আমি জনসাধারণের জন্য এই নোটেশন এবং ব্যক্তিগত সদস্যদের জন্য এই নোটেশনটি ব্যবহার করি।
কলম রজার্স 16

আমিও এটি ঘৃণা করি। এটি আমাকে বিভ্রান্ত করে :(
ব্রোকেন_উইন্ডো

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

@ ইভান: আপনি শেষ অংশ ব্যতীত যা বর্ণনা করছেন ঠিক তেমনই আমি করি। আমি ব্যবহারের প্রবণতা thisবা Meযখন পদ্ধতি এবং বৈশিষ্ট্য কলিং (গ # & VB.NET যথাক্রমে)। আইএমও, এটি আমার কোডটি পরে পড়তে ও বুঝতে সহজ করে তোলে, বিশেষত যখন নির্দিষ্ট ক্ষেত্রের মধ্যে চার বা ততোধিক অবজেক্ট থাকে।
অ্যালেক্স ইসিলফি

11

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

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

কোডটি আপনি প্রথমে এর মতো দেখতে ভেবেছিলেন এমন সমস্ত কিছু দেখবে না। প্রতিবার ঘটে :)


10

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


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

10

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


10

চেক করা ব্যতিক্রম

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

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


9

সার্থক যে কোনও কিছুই কেবল একটি নির্দিষ্ট ভাষায় কোড করা হয়েছিল। আমার ক্ষেত্রে আমি বিশ্বাস করি যে সি হ'ল সর্বকালের সেরা ভাষা এবং আমার অন্য কোনও ভাষায় কোনও কোড করার কোনও কারণ নেই ... সর্বদা।

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


8

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


এটি আমাকে কতবার বিট করেছে তার কথা মনে করতে পারে ....
প্রীত সংঘ

8

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

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


7

সমস্ত শ্রেণীর সদস্যদের সূচনা করা হচ্ছে।

আমি প্রতিটি শ্রেণীর সদস্যকে কিছু দিয়ে সাধারণত স্পষ্টভাবে সূচনা করতাম, সাধারণত নুল হয়। আমি বুঝতে পেরেছি যে এটি:

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

4
কখনও কখনও সমস্ত শ্রেণীর সদস্যদের আরম্ভ না করার পরিণামগুলি আপনাকে সত্যিই একটি-তে কাটাতে পারে।
মিউসবোল্লা

আপনি প্রোটোটাইপ ভিত্তিক ভাষা ব্যবহার না করে যা ক্লোনিংয়ের মাধ্যমে নতুন দৃষ্টান্ত তৈরি করে। সমস্ত সদস্যকে আরম্ভ করা সত্যিই আপনাকে অনেক ঝামেলা বাঁচাতে পারে।
ওয়াজেসিচ বেডারস্কি

6

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

সংক্ষেপে, আমি আরও দ্রুত এবং দক্ষতার সাথে সফ্টওয়্যার তৈরিতে সহায়তার জন্য "মিনি" ফ্রেমওয়ার্ক ব্যবহার করছি। এই মিনি-ফ্রেমওয়ার্কগুলি প্রচুর সময় সাশ্রয় করে এবং ডান হয়ে গেলে রাস্তাটি বজায় রাখার জন্য একটি অ্যাপ্লিকেশনকে খুব সহজ করতে পারে। জয়ের জন্য প্লাগ 'এন খেলুন!


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

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