[su]আপনি পঁচা PHP প্রোগ্রামার?[/su] :P

নিচের টিপসগুলো বিখ্যাত একজন প্রোগ্রামারের লেখা। ঠিক টিপস নয় এগুলো হলো একজন পঁচা প্রোগ্রামার চেনার উপায়। 🙂 আপনি নিশ্চয়ই খারাপ প্রোগ্রামার হতে চান না। তাহলে পড়ুন!

নিচের প্রতিটি কথাই মূলত অন্যের, আমি বাংলায় অনূদিত করেছি মাত্র(দু’এক জায়গায় মাতব্বরি করে নিজেও মন্তব্য ঢুঁকিয়েছি বোঝার সুবিধার জন্য ;)), আমি নিজেও প্রাণপণে পঁচা প্রোগ্রামার থেকে ভালো হবার চেষ্টায় আছি 😛

প্রথমেই তার নিজের স্বীকারোক্তি দেখুন:
“যদিও আনুষ্ঠানিক ডিগ্রী নিয়েছি সফটওয়্যার ইঞ্জিনিয়ারিং বিষয়ে যার মূল ছিলো এন্টারপ্রাইজ সফটওয়্যার আর্কিটেকচার এবং ডাটাবেজ ডিজাইন। কিন্তু এই ৪০টি পয়েন্টের একাধিক পয়েন্টের দোষে আমিও দুষ্ট ছিলাম”

আপনি যাচ্ছেতাই রকমের একজন PHP প্রোগ্রামার যদি:
১. যদি আপনি আপনার কোডগুলোকে ভালোভাবে কমেন্টিং না করেন [link|http://www.phpdoc.org|phpDoc]এর মতো কোনো টুল ব্যবহার না করেন।

২. যদি [link|http://www.zend.com/de/|Zend Studio] অথবা [link|http://www.zend.com/en/community/pdt|Eclipse PDT]ভালো প্রোগ্রামিং IDE গুলোর প্রয়োজনীয়তা বা সুবিধা বোঝার ক্ষমতা না থাকে।

৩. কখনোই ভারশন কন্ট্রোল এর জন্য [link|http://subclipse.tigris.org/|Subclipse] বা সাবভার্শন বা CVS জাতীয় কোনোকিছু ব্যবহার না করেন।

৪. কোনো নির্দিষ্ট [link|http://pear.php.net/manual/en/standards.php|কোডিং স্ট্যান্ডার্ড বা নেমিকনভেনশন] তৈরি করে নেন না যা পুরো প্রোজেক্ট জুড়ে মেনে চলবেন।

৫. নিয়মিত একটি নির্দিষ্ট ধারার methodology ব্যবহার করেন না(যা ব্যবহারের ফলে তাতে উন্নয়ন করা যায় সময়ে সময়ে।)

৬. ইনপুট বা SQL কোয়্যারিগুলোকে ভ্যালিডট বা নিরাপদভাবে এসকেপ করেন না।

৭. কোডিং করে নেয়ার আগেই অ্যাপ্লিকেশনটি পুর্ণাঙ্গভাবে পরিকল্পনা করে নেন না।

৮. আপনার ডেভেলপিংএ টেস্টিং নেই বললেই চলে।

৯. এরর রিপোর্টিং অন রেখে প্রোগ্রামকে বারবার টেস্ট রান করে দেখেন না।

১০. আলাদা কোনো ডিবাগারের প্রয়োজনীয়তা অনুভব করেন না।

১১. নিজের (আগে করা) কোডের উন্নতি ঘটান না।

১২. কোডিং এবং ডিজাইনের বিভিন্ন লেয়ারকে পৃথক রাখার প্রয়োজন অনুভব করেন না [link|http://toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework.html|MVC] বা এজাতীয় অন্যান্য ডিজাইন প্যাটার্নের আদলে।

১৩. জানেনই না: [link|http://en.wikipedia.org/wiki/KISS_principle|KISS], [link|http://en.wikipedia.org/wiki/DRY|DRY], [link|http://toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework.html|MVC], [link|http://www.php.net/manual/en/language.oop5.php|OOP], [link|http://en.wikipedia.org/wiki/Representational_State_Transfer|REST] এগুলো কাকে বলে? খায় না মাথায় দেয়?

১৪. কন্টেন্ট return করেন না বরং echo বা print করেন নিজের function বা class এ।

১৫. ইউনিট টেস্টিং বা সাধারণ টেস্টিং এর কোনো সুবিধা আছে কিনা জেনে দেখেননি।

১৬. আপনি HTML হিসেবে return করেন, কিন্ত data, string, বা object হিসেবে নয়।

১৭. মেসেজ বা কনফিগারেশন প্যারামিটারগুলো হার্ডকোডেড ভাবে লেখেন। ফলে ভবিষ্যতে লোকালাইজেশন বা অন্যকোনো পরিবর্তন/পরিবর্ধন করা আয়াসসাধ্য হয়।

১৮. আপনার sql কোয্যারিগুলো আরো অপটিমাইজ করা দরকার কীনা ভেবে দেখেন না।

১৯. কখনো __autoload এর ব্যবহার করেন না।

২০. নতুন ইন্টেলিজন্ট এরর হ্যান্ডলিং ব্যবহার করেন না।

২১. রাইট/আপডেট এমন জাতীয় ডেস্ট্রাক্টিভ কাজেও Array কেই ব্যবহার করেন Array এর ব্যবহার না করে।

২২. রেগুলার এক্সপ্রেশন খুবই কঠিন কোনো ব্যাপার আপনার কাছে।

২৩. sql injection বা cross-site scripting(XSS) সম্পর্কে কিছুই জানেন না।

২৪. don’t allow simple configuration, can be parameters passed to a class’s constructor, set/get methods called later, or constants defined at a runtime.

২৫. অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর সুবিধা এবং সীমাবদ্ধতা সম্পর্কে ভালো ধারণা নেই আপনার।

২৬. OOPএর অপব্যবহার বা অতিব্যবহার করে ফেলেন।

২৭. আপনার ধারণা কোডিং/সফটওয়্যার রিইউজ করার জন্য কোড অবশ্যই OOPএ লেখা হতে হবে।

২৮. don’t choose intelligent defaults

২৯. একটি কনফিগারেশন ফাইল ব্যবহার করেন না(হয় একটাও করেন না আর করলেও একাধিক)।

৩০. ফাইলের কন্টেন্ট আনঅথোরাইজড কাউকে দেখতে দিতে চাননা কিন্তু ফাইলের এক্সটেনশন .inc রাখেন .php এর বদলে।

৩১. কোনো ডাটাবেজ অ্যাবস্ট্রাকশন লেয়ার ব্যবহার করেন না।

৩২. DRY মেথড মেনে চলেন না।

৩৩. আপনার তৈরি function/class/method গুলো একটি মাত্র কাজ করেনা, সেগুলোকে ইন্টারঅ্যাক্টিভ করেন না।

৩৪. OOP এর সুবিধাদি অর্থাৎ abstract/interface ক্লাস, inheritage, polymorphism বা access modifier এর সঠিক ব্যবহার করেন না আপনার কোডিং এ।

৩৫. প্রতিষ্ঠিত [link|http://www.sitepoint.com/forums/showthread.php?t=248721|design patterns] অনুযায়ী আপনার অ্যাপ্লিকেশনকে অপটিমাইজ করেন না।

৩৬. আপনার অ্যাপ্লিকেশন যদি বহু ফাইল বা ফোল্ডার সমৃদ্ধ হয় আর সেখানে ব্যবহারকারির কোনো কাজের এক্সেস থাকে তবে তাকে কোনো বেজ ফোল্ডার ঠিক করে দিতে অপশন রাখেন না।

৩৭. গ্লোবাল নেমস্পেসকে দূষিত করেন, যার একটি উপায় হলো আপনার ফাংশন এর নামের প্রথমে কমন একটি শব্দ(স্ট্রিং) ব্যবহার করেন আপনার লাইব্রেরি জুড়ে।

৩৮. ডাটাবেজ টেবিল এ কোনো প্রিফিক্স ব্যবহারের প্রয়োজনীয়তা কখনোই অনুভব করেন না।

৩৯. স্মার্টি বা এ জাতীয় কোনো [link|http://www.sitepoint.com/forums/showthread.php?t=67849|template engine] ব্যবহার করেন না।

৪০. প্রতিষ্ঠিত [link|http://www.phpit.net/article/ten-different-php-frameworks/|php ফ্রেমওয়ার্কগুলো] সম্পর্কে কোন ধারণাই রাখেন না কাজ না করলেও অন্তত পরে কাজ করার উৎসাহ পাবার জন্য, কারণ সেগুলো দেখেই কার্যকর কোডিং এবং উন্নততর আইডিয়ার সন্ধান পেতে পারেন।

মূল লেখা দেখুন: [link|http://reinholdweber.com/?p=19]http://reinholdweber.com/?p=19|http://reinholdweber.com/?p=19]http://reinholdweber.com/?p=19]

কিছু গুরুত্বপূর্ণ পিএইচপি সংক্রান্ত লিঙ্ক :
http://www.geekinterview.com/Interview-Questions/Programming/PHP
http://www.phptalk.com/index.php?page=details&id=12
http://www.techinterviews.com/?p=243

About

একটি উত্তর দিন