প্রতিবেদনে যাওয়ার এক ঘন্টা পরে আমি নীচের তালিকাটি নিয়ে এসেছি, এটি আমার মনে হয় সবার পক্ষে সহায়ক হতে পারে।
আমি আরও সতর্কতা / ত্রুটিগুলি খুঁজে পাওয়ার সাথে সাথে এটি আপডেট করার চেষ্টা করব:
সতর্কবাণী
রেখাটি 80 টি অক্ষর ছাড়িয়ে গেছে; এক্স অক্ষর রয়েছে
অথবা
লাইন সর্বোচ্চ 100 টি অক্ষরের সীমা অতিক্রম করেছে; এক্স অক্ষর রয়েছে
আমি সেগুলিই সর্বাধিক দেখেছি, সেগুলি স্ব-বর্ণনামূলক a একটি পরিষ্কার এবং পঠনযোগ্য কোড রাখার জন্য কোডিং লাইনগুলি ছোট রাখাই ভাল অনুশীলন।
ফাংশন কলে কমা পরে কোনও স্থান পাওয়া যায় নি
আপনি এমন একটি ফাংশন কল করেছেন যা পরামিতিগুলি গ্রহণ করে এবং কমা পরে কোনও স্থান যোগ করেনি। উদাহরণ: strrchr($bla,".")
হওয়া উচিতstrrchr($bla, ".")
প্রত্যাশিত \ "যখন (...) {\ n \"; ... "যখন (...) found n {\ n \" পাওয়া গেছে
প্রত্যাশিত \ "foreach (...) {\ n \"; found "foreach (...) \ n {\ n \" পাওয়া গেছে
প্রত্যাশিত \ "যদি (...) {\ n \"; পাওয়া গেছে if "যদি (...) \ n {\ n found"
প্রত্যাশিত \ "} অন্য {\ n \"; পাওয়া গেছে else "} \ n অন্য {\ n \"
এর অর্থ আপনি এই পিএইচপি বিবৃতিগুলির খোলার বন্ধনীটির আগে একটি লাইন ফিরে এসেছেন।
একটি / অন্য বিবৃতি সহ একটি খারাপ সিনট্যাক্সের উদাহরণ:
if (true)
{
}
else
{
}
হতে হবে
if (true) {
} else {
}
মাল্টি-লাইন ফাংশন ঘোষণার সমাপ্তি বন্ধনী এবং প্রারম্ভিক বন্ধনী একই লাইনে থাকতে হবে
বেশিরভাগ সময়, এটি কনস্ট্রাক্টরে ঘটে যেখানে আপনি এরকম কিছু ঘোষণা করেন:
public function __construct(
ProductFactory $productFactory,
Test $test
)
{
}
যদিও এটি হওয়া উচিত:
public function __construct(
ProductFactory $productFactory,
Test $test
) {
}
লাইন চরিত্রের শেষটি অবৈধ; প্রত্যাশিত \ "\ n \" তবে পাওয়া গেছে \ "\ r \ n \"
ফাইলের শুরুতে বেশিরভাগ সময় ঘটে থাকে, এটির কারণটি আপনার আইডিই ফেরতের অক্ষরকে এনকোড করে।
পরিবর্তনশীল \ "আপনার_ভেরিযোগ্য \" বৈধ উটের ক্যাপ ফর্ম্যাটে নেই
প্রতিটি পরিবর্তনশীল অবশ্যই উটের ক্যাপ ফর্ম্যাট ব্যবহার করতে হবে, তাই $your_variable
হওয়া উচিত$yourVariable
চলক \ "one2Three \" এ সংখ্যা রয়েছে তবে এটি নিরুৎসাহিত করা হয়েছে
আপনার ভেরিয়েবলগুলিতে নম্বর ব্যবহার করা এড়িয়ে চলুন
ইনলাইন নিয়ন্ত্রণ কাঠামো অনুমোদিত নয়
আপনার যেমন ইনলাইন নিয়ন্ত্রণ কাঠামো ব্যবহার করা উচিত নয়:
else $test = true;
আপনার ব্যবহার করা উচিত:
else {
$test = true;
}
সংজ্ঞার পরে কোনও শ্রেণীর খোলার ব্রেস অবশ্যই লাইনে থাকবে
শ্রেণি ঘোষণা করার সময় আপনি একটি লাইন ফিরে এসেছেন:
class Test
{
আপনার খোলার বন্ধনী একই লাইনে রাখা উচিত:
class Test {
ব্যক্তিগত সদস্য ভেরিয়েবল \ "আপনার পরিবর্তনশীল V" অবশ্যই একটি শীর্ষস্থানীয় আন্ডারস্কোর থাকতে হবে contain
সুরক্ষিত সদস্য ভেরিয়েবল \ "আপনার পরিবর্তনশীল \" অবশ্যই একটি শীর্ষস্থানীয় আন্ডারস্কোর থাকতে হবে
আপনার সুরক্ষিত এবং ব্যক্তিগত সদস্য ভেরিয়েবলগুলিতে আপনার একটি শীর্ষস্থানীয় আন্ডারস্কোর যুক্ত করা উচিত: $_yourVariable
এই দু'জনের বিপরীতে, আপনি যদি আপনার সর্বজনীন চলকটিতে আন্ডারস্কোর যুক্ত করেন তবে আপনি পেতে পারেন:
পাবলিক সদস্য ভেরিয়েবল \ "_ আপনার পরিবর্তনশীল" এ অবশ্যই একটি শীর্ষস্থানীয় আন্ডারস্কোর থাকতে হবে না।
পদ্ধতি প্যারামিটার $ bla কখনও ব্যবহার করা হয় না
আপনি কোনও পদ্ধতিতে একটি প্যারামিটার পাস করেছেন কিন্তু আপনি কখনই এটি ব্যবহার করেন না।
মাল্টি-লাইন ফাংশন ঘোষণা সঠিকভাবে ইন্টেন্ট করা হয়নি; 8 স্পেস প্রত্যাশিত কিন্তু এক্স পাওয়া গেছে
আপনি আপনার ফাংশন ঘোষণার পরামিতিগুলিতে খুব বেশি ইনডেন্টেশন যুক্ত করেছেন:
public function __construct(ProductRepository $productRepository,
ListsInterface $listsInterface,
Data $helper
) {
হতে হবে:
public function __construct(ProductRepository $productRepository,
ListsInterface $listsInterface,
Data $helper
) {
সম্ভাব্য অকেজো পদ্ধতিতে ওভাররাইড সনাক্ত করা হয়েছে
আপনি পরিবর্তনগুলি যুক্ত না করে কোনও পদ্ধতিকে ওভাররাইড করছেন, উদাহরণস্বরূপ:
public function __construct(Context $context) {
parent::__construct($context);
}
লুপে মডেল এলএসডি পদ্ধতির লোড () সনাক্ত হয়েছে
আপনি load()
কোনও লুপের ভিতরে পদ্ধতিটি ব্যবহার করছেন যা প্রস্তাবিত নয় এবং এড়ানো উচিত।
সম্ভবত আপনার কোডটি এর মতো দেখাচ্ছে:
foreach(...) {
$model->load();
}
আপনি যদি কোনও লুপটিতে কোনও মডেল লোড করছেন তবে এটি কার্য সম্পাদনের দিক থেকে বেশ খারাপ। আপনার যদি কেবল কয়েকটি বৈশিষ্ট্য পুনরুদ্ধার করতে হয় তবে আপনার পরিবর্তে সংগ্রহগুলি ব্যবহার করা উচিত।
ফাংশনের সাইক্লোমেটিক জটিলতা (এক্স) 10 ছাড়িয়ে গেছে; ফাংশন রিফ্যাক্টরিং বিবেচনা করুন
আপনি যদি সাইক্লোমেটিক জটিলতার সাথে পরিচিত না হন তবে আমি আপনাকে এই পোস্টে একটি পড়ার পরামর্শ দিচ্ছি: https ://pd depend.org/docamentation/software-metics/cyclomat-complexity.html । এই সতর্কতার মূলত অর্থ এই যে আপনার ফাংশনে অনেকগুলি লুপ এবং শর্ত রয়েছে।
সরাসরি অবজেক্ট ইনস্ট্যান্টেশন হ'ল ম্যাজেন্টো 2-এ নিরুৎসাহিত করা
আপনি ক্লাসকে ডেকে সরাসরি কোনও বস্তু ইনস্ট্যান্ট করছেন তা এই কারণে ঘটে: উদাহরণস্বরূপ:
new \Zend_Filter_LocalizedToNormalized
আপনি অবজেক্ট ম্যানেজার নির্ভরতা ইনজেকশন বা একটি শেষ অবলম্বন ব্যবহার করা উচিত।
মন্তব্যগুলি একটি টুডো টাস্কটি উল্লেখ করে
আপনার মন্তব্যের একটিতে নিম্নলিখিত @TODO
পতাকা রয়েছে ।
সর্বদা সত্য বা মিথ্যা আইএফ বিবৃতি এড়িয়ে চলুন
আপনি একটি শর্ত তৈরি করেছেন যা সর্বদা সত্য বা মিথ্যা বলে মনে হয়।
উদাহরণ স্বরূপ:
$variable = "6";
...
// More code that doesn't change $variable
...
if ($variable)
ত্রুটি
\ "Class \" শ্রেণীর জন্য নেমস্পেস নির্দিষ্ট করা হয়নি।
আপনি use Path\To\Class;
আপনার ক্লাসের শুরুতে বিবৃতিটি মিস করছেন ।