আপনার সবচেয়ে বিতর্কিত প্রোগ্রামিং মতামত কি?


363

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

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

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

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

উত্তর:


875

প্রোগ্রামাররা যারা মজাদার জন্য অতিরিক্ত সময় কোড করে না তারা কখনই তাদের মতো ভাল হয়ে উঠবে না।

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

(দ্রষ্টব্য: আমি বলছি না ভাল প্রোগ্রামাররা প্রোগ্রামিং ছাড়া অন্য কিছু করেন না, তবে তারা 9 থেকে 5 পর্যন্ত প্রোগ্রামের চেয়ে বেশি কিছু করেন)


769

আপনার সর্বকালের একমাত্র "সেরা অনুশীলন" ব্যবহার করা উচিত হ'ল "আপনার মস্তিষ্ক ব্যবহার করুন"।

প্রচুর লোক খুব বেশি ব্যান্ডওয়াগনে ঝাঁপিয়ে পড়ে এবং পদ্ধতি, নিদর্শন, ফ্রেমওয়ার্ক ইত্যাদি জোর করে এমন জিনিসগুলিতে জোর করে চেষ্টা করে যা তাদের ওয়্যারেন্ট দেয় না। কিছু নতুন, বা সম্মানিত কারও মতামত রয়েছে বলেই এর অর্থ এই নয় যে এটি সবই খাপ খায় :)

সম্পাদনা: কেবল পরিষ্কার করার জন্য - আমি মনে করি না যে লোকেরা সর্বোত্তম অনুশীলনগুলি, মূল্যবান মতামত ইত্যাদিকে উপেক্ষা করবে Just কেবল এই যে "জিনিস" এত দুর্দান্ত কেন তা চিন্তা না করে লোকেরা কেবল অন্ধভাবে কোনও কিছুতে ঝাঁপিয়ে পড়া উচিত নয়, এটি কি আমার প্রযোজ্য? আমি করছি, এবং এতে কী কী উপকার / অপূর্ণতা এনেছে?


711

"গুগলিং" ঠিক আছে!

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

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

কী গুরুত্বপূর্ণ তা হল আপনি উপাদানটি বুঝতে পেরেছেন, এটি একটি সফল প্রোগ্রামিং সমাধানের সমাপ্তির মাধ্যম হিসাবে ব্যবহার করুন এবং ক্লায়েন্ট / আপনার নিয়োগকর্তা ফলাফলগুলি নিয়ে খুশি।

(যদিও আপনি যদি হ্যালুসিনেটরি টকিং ব্যাঙের উত্তর পেয়ে থাকেন তবে আপনার সম্ভবত কিছুটা সহায়তা পাওয়া উচিত)


710

কোডের বেশিরভাগ মন্তব্যগুলি আসলে কোড নকলের একটি ক্ষতিকারক রূপ।

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

আমি মনে করি অবশেষে অনেক লোক এগুলিকে ফাঁকা করে ফেলেছে, বিশেষত flower ফুলবক্স মনস্ট্রোসিটি।

কোডটি পঠনযোগ্য করে তোলা, প্রয়োজনীয় হিসাবে রিফ্যাক্টরিং এবং আইডিয়াম এবং কৌতূহলকে হ্রাস করার উপর মনোনিবেশ করা আরও ভাল।

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


693

এক্সএমএল অত্যন্ত ওভাররেটেড

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

আমার 5 সেন্ট


678

সমস্ত প্রোগ্রামার সমানভাবে তৈরি হয় না

বেশিরভাগ ক্ষেত্রে পরিচালকরা মনে করেন যে বিকাশকারী == বিকাশকারী কেবল তাদের কারণগুলির একই স্তরের অভিজ্ঞতা রয়েছে। প্রকৃতপক্ষে, একজন বিকাশকারীর কর্মক্ষমতা 10x বা অন্যটির তুলনায় 100x হতে পারে।

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


614

আমি কেন বুঝতে পারছি না যে লোকেরা কেন মনে করে যে বিশ্ববিদ্যালয়গুলিতে জাভা হ'ল একেবারে সেরা "প্রথম" প্রোগ্রামিং ভাষা taught

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

অন্যটির জন্য, আমি বিশ্বাস করি যে লোকেরা সি / সি ++ তে মেমরি ফাঁসের ডিবাগিংয়ের অভিজ্ঞতা অর্জন করেনি তারা জাভা টেবিলে কী নিয়ে আসে তা পুরোপুরি প্রশংসা করতে পারে না।

এছাড়াও প্রাকৃতিক অগ্রগতিটি "আমি কীভাবে এটি করতে পারি" থেকে "লাইব্রেরি যা করে এটি কীভাবে খুঁজে পাব" এবং অন্যদিকে নয় should


541

আপনি যদি কেবল একটি ভাষা জানেন তবে আপনি এটি কতটা ভাল জানেন তা বিবেচনা না করেই আপনি দুর্দান্ত প্রোগ্রামার নন।

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

এটি আমার জিজ্ঞাসাবাদ এবং পরীক্ষায় আগ্রহী হওয়ার একটি নির্দিষ্ট অভাবকেও ইঙ্গিত করে যা আমি খুব ভাল প্রোগ্রামারটিতে যে গুণাবলীর প্রত্যাশা করতাম তা অবশ্যই প্রয়োজন হয় না doesn't



488

মুদ্রণ বিবরণী কোড ডিবাগ করার একটি বৈধ উপায়

আমি বিশ্বাস করি যে আপনার কোডটি লিটারের মাধ্যমে System.out.println(বা যে কোনও মুদ্রণ বিবৃতি আপনার ভাষার জন্য কাজ করে) এটি ডিটারবাগ করা পুরোপুরি ঠিক । প্রায়শই এটি ডিবাগিংয়ের চেয়ে দ্রুত হতে পারে এবং আপনি অ্যাপের অন্যান্য রানগুলির তুলনায় মুদ্রিত আউটপুটগুলির তুলনা করতে পারেন।

আপনি যখন প্রোডাকশনে যান তখন মুদ্রণ বিবৃতিগুলি মুছে ফেলার বিষয়টি নিশ্চিত করুন (বা আরও ভাল, এগুলিকে লগিংয়ের বিবৃতিতে পরিণত করুন)


467

আপনার কাজ নিজেকে কাজ থেকে দূরে রাখা হয়।

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

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

মজার বিষয় হচ্ছে, আমি খুঁজে পেয়েছি যে সেই লক্ষ্যটি আমাকে আমার নিয়োগকর্তাদের কাছে আরও মূল্যবান করে তুলেছে। আমি যত বেশি নিষ্পত্তিযোগ্য হওয়ার চেষ্টা করি ততই আমি তাদের কাছে মূল্যবান হয়ে উঠি।


465

1) ব্যবসায় অ্যাপ্লিকেশন প্রহসন :

আমি মনে করি পুরো "এন্টারপ্রাইজ" ফ্রেমওয়ার্ক জিনিস ধোঁয়া এবং আয়না। J2EE, .NET, এপাচি ফ্রেমওয়ার্কের বেশিরভাগ অংশ এবং এই জাতীয় জিনিসগুলি পরিচালনা করতে বেশিরভাগ বিমূর্ততা তাদের সমাধানের চেয়ে অনেক বেশি জটিলতা তৈরি করে।

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

তাদের নিজস্ব ডার্নড বর্ণনাকারী সিনট্যাক্স, অতি জটিল ডেটাবেস এবং গ্রুপওয়্যার পণ্যগুলির সাথে সমস্ত বিভিন্ন অ্যাপ্লিকেশন সার্ভার সম্পর্কে কীভাবে?

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

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

2) অভিজ্ঞতার এন-বর্ষ-এর প্রয়োজন:

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

3) সাধারণ "কম্পিউটার বিজ্ঞান" ডিগ্রি পাঠ্যক্রম:

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


439

গেটারস এবং সিটারগুলি অত্যন্ত মাত্রায় ব্যবহার করা হয়

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

আমি পাবলিক ফিল্ডের পক্ষে নই, তবে তাদের প্রত্যেকের জন্য গেটর / সেটার (বা সম্পত্তি) তৈরির বিরুদ্ধে, এবং তারপরে দাবি করছি যে এটি করাটা এনক্যাপসুলেশন বা তথ্য গোপন করা ... হা!

হালনাগাদ:

এই উত্তরটি এর মন্তব্যে কিছু বিতর্ক সৃষ্টি করেছে, তাই আমি এটিকে কিছুটা স্পষ্ট করার চেষ্টা করব (আমি আসলটি ছোঁয়াব যেহেতু এটি অনেক লোকই উত্সাহিত করেছিল)।

প্রথমত: যে কেউ सार्वजनिक ক্ষেত্র ব্যবহার করে সে জেলের সময় পাওয়ার যোগ্য

এখন, ব্যক্তিগত ক্ষেত্রগুলি তৈরি করা এবং তারপরে আইডিই ব্যবহার করে তাদের প্রত্যেকের জন্য স্বয়ংক্রিয়ভাবে গিটার এবং সেটার তৈরি করতে পাবলিক ফিল্ডগুলি ব্যবহার করা প্রায় খারাপ

অনেকে ভাবেন:

private fields + public accessors == encapsulation

আমি বলছি (ক্ষেত্রগুলির জন্য গেটর / সেটার জোড়ের জেনারেশন স্বয়ংক্রিয় বা না) কার্যকরভাবে তথাকথিত এনক্যাপসুলেশনটির বিরুদ্ধে যায় যা আপনি অর্জনের চেষ্টা করছেন।

শেষ অবধি, আমাকে এই বিষয়টিতে আঙ্কেল ববকে উদ্ধৃত করা যাক ("ক্লিন কোড" এর chapter ষ্ঠ অধ্যায় থেকে নেওয়া):

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


383

ইউএমএল চিত্রগুলি অত্যধিক ওভাররেটেড

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


381

মতামত: এসকিউএল কোড হয়। এটির মতো আচরণ করুন

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

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


354

পঠনযোগ্যতা আপনার কোডের সবচেয়ে গুরুত্বপূর্ণ দিক।

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


342

আপনি যদি বিকাশকারী হন তবে আপনার কোড লিখতে পারা উচিত

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

দেওয়া হয়েছে যে পাই আরও 4 টি (1 - 1/3 + 1/5 - 1/7 + ...) ফাংশনটি আরও বেশি নির্ভুলতার সাথে ব্যবহার করে অনুমান করা যেতে পারে, এমন একটি ফাংশন লিখুন যা পাইকে দশমিক দশকের স্থানে নির্ভুলতায় গণনা করে ।

এটি এমন একটি সমস্যা যা আপনাকে ভাবিয়ে তুলতে পারে, তবে এটি একটি পাকা বিকাশকারীদের নাগালের বাইরে থাকা উচিত নয় (এটি সি # এর প্রায় 10 লাইনে উত্তর দেওয়া যেতে পারে)। তবে, আমাদের বেশিরভাগ (এজেন্সিটির প্রাক-স্ক্রিনযুক্ত) প্রার্থীরা এমনকি এর উত্তর দেওয়া শুরু করতে পারেনি, বা এমনকি তারা কীভাবে এর উত্তর দেওয়ার বিষয়ে যেতে পারে তাও ব্যাখ্যা করতে পারেনি। তাই কিছুক্ষণ পরে আমি সহজ প্রশ্ন জিজ্ঞাসা করা শুরু করলাম:

বৃত্তের ক্ষেত্রফলটি ব্যাসার্ধ বর্গক্ষেত্রের পাই দ্বারা প্রদত্ত, একটি বৃত্তের ক্ষেত্রফল গণনা করার জন্য একটি ফাংশন লিখুন।

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

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


সম্পাদনা:

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

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


330

হাদীস স্বরলিপি ব্যবহার করে মৃত্যুদণ্ড দেওয়া উচিত।

এটি যথেষ্ট বিতর্কিত হওয়া উচিত;)


287

ডিজাইনের ধরণগুলি ভাল ডিজাইনটিকে সহায়তা করার চেয়ে বেশি ক্ষতি করছে।

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

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


274

কম কোডের চেয়ে বেশি ভাল!

যদি ব্যবহারকারীরা "এটি কি?" বলে থাকেন এবং আপনার কাজ অদৃশ্য থেকে যায় তবে এটি সঠিকভাবে সম্পন্ন হয়েছে। গৌরব অন্য কোথাও পাওয়া যাবে।



262

ইউনিট টেস্টিং আপনাকে ভাল কোড লিখতে সহায়তা করবে না

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

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

আসলে, আমি আরও আরও সাধারণীকরণ করব,

সফ্টওয়্যার ইঞ্জিনিয়ারিংয়ের বেশিরভাগ "সেরা অভ্যাসগুলি" সেখানে খারাপ প্রোগ্রামারদের বেশি ক্ষতি করতে বাধা দেওয়ার জন্য থাকে

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


256

ছোট ছোট পদ্ধতি লিখুন। দেখে মনে হচ্ছে প্রোগ্রামাররা লুওং পদ্ধতিগুলি লিখতে পছন্দ করে যেখানে তারা একাধিক বিভিন্ন কাজ করে।

আমি মনে করি যে যেখানেই আপনি নাম রাখতে পারেন সেখানে একটি পদ্ধতি তৈরি করা উচিত।


235

একবারে একবারে আবর্জনা কোড লেখা ঠিক আছে

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


196

কোড == ডিজাইন

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


ডিজাইন হিসাবে কোড শীর্ষক একটি নিবন্ধ এখানে ।


186

সফটওয়্যার বিকাশ একটি কাজ মাত্র

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

তবে জিনিসগুলির দুর্দান্ত স্কিমে এটি কেবল একটি কাজ।

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

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


184

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

বেশিরভাগ লোক মনে করে যে একই বাক্যে "উত্স নিয়ন্ত্রণ" এবং "বাইনারি" উল্লেখ করার জন্যও আমাকে ঝুঁকির মধ্যে ফেলে দেওয়া উচিত। এমনকি এমন জায়গাগুলি সম্পর্কেও জানি যেগুলির কঠোর বিধি রয়েছে যে তারা এগুলি যোগ করতে পারবেন না।


180

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


164

সফ্টওয়্যার আর্কিটেক্টস / ডিজাইনাররা ওভাররেটেড

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

কীভাবে বিতর্কিত?

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


152

উন্নয়নের জন্য কোনও "এক আকার সবই ফিট করে" approach

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

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

মানুষ এমনকি যেমন, "আমি টেস্ট করছি চালিত" বা তাদের ব্লগে ব্যাজ নির্বাণ হিসাবে হিসাবে দূরে যেতে হবে বলে মনে হচ্ছে অনুরূপ, যেন একটি একক পদ্ধতির তাদের কঠোর আনুগত্য যাই হোক না কেন প্রকল্পের প্রকল্প বিবরণ আসলে একটি হয় ভাল জিনিস

এটা না।

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

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