سبک و شیوه ی نگراش کدها
نوشتن SQL می تواند یک فعالیت خیلی جالبی باشد. خواندن آن نیز می تواند لذت بخش باشد یا اینکه اینگونه نباشد (این بستگی به رعایت اصول کلی دارد). شما چگونه کدها خود را می نویسید تا چشم بتواند ساده و سریع آن را بخواند و مغز آن را بفهمد؟ آیا با شیوه های اصولی و استاندارد نگارش کدها آشنا هستید و به مزایای آن پی برده اید؟ نگران نباشید در ادامه به برخی از عناوین و مواردی که به ما کمک می کند تا کدها را خواناتر و استاندارد تر بنویسیم اشاره خواهم کرد.
اصل اول: نام گذاری اسامی
تنها از کاراکترهای الفبایی، ارقام و خط زیر (underline/underscore) برای نام گذاری اسامی (متغیر ها، جداول، ستونها و ...) استفاده شود. این زیر مجموعه از کاراکتر ها برای نام گذاری اسامی در زبان های برنامه نویسی دیگر نیز بکار گرفته می شود و اگر بخواهیم از یک نام یکسان در Database و زبان برنامه نویسی استفاده کنیم مشکلی بوجود نمی آید.
اصل دوم: نامگذاری ستونها و متغیرها
تنها از حروف کوچک (lower case) برای نام گذاری ستونها، متغیر ها و پارامتر ها استفاده شود. حروف کوچک نسبت به حروف بزرگ تر ساده تر و سریع تر خوانده می شوند به همین علت در روزنامه ها و کتب از حروف کوچک استفاده شده است. بطور نمونه "اولین همیار دانشجو" اگر نام یک ستون باشد طریقه ی صحیح نام گذاری آن "first_student_partner" خواهد بود (مستقل از ترتیب صحیح قرار گیری صفات). همانطور که شاهد هستید با کاراکتر underscore کلمات را از همدیگر تفکیک کردیم تا از این اصل پیروی کرده باشیم.
اصل سوم: نامگذاری جداول
اسامی جداول، ویوها (view) و رویه های ذخیره شده (stored procedure) را Capitalize کنید به این معنا که حرف اول نام را بزرگ بنوسید. بطور مثال جدولی به نام "محصولات" به شکل "Products" نامگذاری شده و اسامی که شامل چند کلمه هستند را می توانیم به شکل CamelCase بنوسیم؛ مثل ProductSupplierAttribute.
اصل چهارم: کلیدواژه ها با حروف بزرگ نوشته شده باشند
تمام کلید های رزرو شده مثل SELECT، FROM و ... را با حروف بزرگ بنوسید. با این کار به چشم کمک می کنید تا ماده های (Clauses) یک عبارت SELECT از هم تفکیک شده و بتوانیم به سادگی بین ماده های مختلف جابجا شویم.
دو کد زیر را با همدیگر مقایسه کنید و ببینید در کدام یک، اجزای کوئری ساده تر شناسایی می شوند.
select a, b, c from Foobar where a = 10;
SELECT a, b, c FROM Foobar WHERE a = 10;
اصل پنجم: فاصله ی بین کلمات
بین کلمات یک فاصله ی Space قرار دهید. بطور مثال به جای عبارت a=10 بنویسید a = 10
اصل ششم: فاصله بعد کاما
بعد از کاراکتر کاما (comma یا ,) یک فاصله ی خالی قرار دهید. با این کار مانع از گیج شدن هنگام خواندن لیست کاما (comma list) می شوید بطور مثال خود قضاوت کنید کدام یک از کد ها زیر راحت تر خوانده می شوند:
SELECT T1.column_1,T2.column_2,T3.column_3 FROM Table_1 T1,Table_2 T2,Table_3 T3;
SELECT T1.column_1, T2.column_2, T3.column_3 FROM Table_1 T1, Table_2 T2, Table_3 T3;
اصل هفتم: کاما را آخر خط قرار دهید
کاراکترهایی چون کاما (,) و سمی کولن (semi colon یا ;) سیگنال های بصری هستند که خاتمه ی عبارتی را نشان می دهند نه شروع چیزی. و نیز به جای اینکه نام ستون ها را در چند خط بنویسیم آنها را در یک خط بنویسیم (تا چشم از چپ به راست براحتی آنها را بخواند) و یا اینکه بر اساس جدولشان در چند خط گروه بندی کنیم.
بطور مثال کد اول نادرست و کد دوم مناسب است:
SELECT T1.a
,T1.b
,T1.c
,T2.x
,T2.y
FROM Table_1 T1, Table_2 T2
;
SELECT T1.a, T1.b, T1.c,
T2.x, T2.y
FROM Table_1 T1, Table_2 2;
اصل هشتم: از کلمات رزرو شده کامل استفاده کنید
برای نام مستعار دادن به یک ستون (یا یک جدول یا عبارت جدولی مثل Derived Table) می توانیم از AS استفاده کنیم یا اینکه تنها با یک فاصله نام مستعار را بدهیم بدون نوشتن کلمه رزرو شده ی AS ولی نوشتن AS برای دادن نام مستعار به ستون توصیه می شود. همچنین به جای INT توصیه می شود INTEGER را بنویسیم چرا که شکل کامل INT است.
اصل نهم: بکارگیری کلید واژه های استاندارد بجای کلمات کلیدی رزرو شده اختصاصی
منظور از کلمات کلیدی رزرو شده اختصاصی، عملگرهایی است که تنها در یک DBMS خاص بکار گرفته می شود مثلا APPLY یا PIVOT که تنها در MS SQL Server بکارگرفته می شود. کد های استاندارد برای تمام برنامه نویسان آشنایی و خوانایی دارد و هنگامی که بخواهیم در محصولات دیگر از کد استفاده کنیم نیازی به نوشتن مجدد نخواهد داشت. مثلا برای نام مستعار دادن به یک ستون در SQL Server از = نیز استفاده می شود ولی این روش در Access عمل نمی کند. البته اثتثناهایی نیز وجود دارد مثل عملگر APPLY که شکل استاندارد آن موجود نیست و گزینه ی دیگری برای انتخاب نداریم.
اصل دهم: فاصله ستونی
منظور align کردن ابتدا (از چپ) یا انتها (از راست) ماده های select است. بطور مثال کوئری اول از این اصل پیروی نمی کند ولی در دو کوئری آخر فاصله ستونی رعایت شده است:
SELECT *
FROM Products
WHERE product_id = 21;
SELECT *
FROM Products
WHERE product_id = 21;
SELECT *
FROM Products
WHERE product_id = 21;
پس طبق مواردی که ذکر شد یک کد تنها به مجرد اینکه هوشمندانه و خلاقانه نوشته شده است دلنشین نیست بلکه روش و شیوه نگارش آن نیز دارای اهمیت است.
برگرفته از کتاب Programming Style آقای Joe Celko