واضح آرشیو وب فارسی:راسخون:
خوانايي بيشتر براي درك بهتر نويسنده: پارسا ستودهنيا خوانايي بيشتر براي درك بهترهمانطور كه ميدانيد ساختار برخي زبانها به شكلي طراحي شده است كه به زبان گفتار نزديك بوده و با خواندن آن تا حدودي ميتوان منطق آن را درك كرد و در مقابل بعضي زبانها هستند كه 2 مفهوم كاملا مشابه با تفاوتي بسيار كوچك از هم شناخته ميشوند و به اين ترتيب گاهي خواننده را به اشتباه مياندازند و شايد خود نويسنده برنامه نيز در نوشتن آن اشتباه كرده و حتي پس از پي بردن به اشكال، در يافتن و اشكالزدايي آن به مشكل بر بخورد. نقش برنامهنويس در خوانايي علاوه بر اين كه يك زبان و نحوه پيادهسازي آن در خوانايي يك برنامه نقش دارد، نقش بزرگتر در اين زمينه، برنامهنويس و طريقه نوشتن او ايفا خواهند كرد. هرچقدر يك زبان، قابليتهاي زيادي داشته باشد، رعايت نكردن برخي اصول و عدم توجه برنامهنويس به آنها ميتواند در نهايت به يك برنامه نامنظم و ناخوانا منتج شود. اكثر زبانهاي برنامهنويسي سطح بالاي امروزي انواع كاراكترهاي كنترلي و فاصله را در برنامه ناديده ميگيرند. معمولا به غير از ثابتهاي رشتهاي كه هر چه در آن قرار دهيم همان را در خروجي دريافت خواهيم كرد، ميتوان در هر جاي برنامه به هر تعداد از كاراكتر tab يا space استفاده كرد يا به تعداد دلخواه، بين خطوط enter زد و اطمينان داشت كه هيچيك از آنها در برنامه نهايي تاثير نخواهد داشت. (البته بين كلمات كليدي و اجزاي برنامهنويسي وجود يك كاراكتر فاصله الزامي است و در غير اين صورت كامپايلر اعلام خطا خواهد كرد. منظور ما، كاراكترهايي اضافه، علاوه بر آنهايي كه لازم هستند؛ است).اعمال تورفتگي در متن برنامه از اين خصوصيت كه كامپايلر، كاراكترهاي فاصله اضافه را ناديده ميگيرد ميتوان به بهترين شكل در بالا بردن نظم و خوانايي برنامه استفاده كرد. در ساختارهاي تو در تو و بلاكهاي داخل هم، مفهومي به نام تورفتگي يا فرورفتگي وجود دارد كه رعايت آن به برنامه نظم داده، خوانايي آن را بالا برده و اشكاليابي و اشكالزدايي آن را ساده ميسازد، اما رعايت نكردن آن در خروجي برنامه بيتاثير است و تنها ممكن است برنامهنويس را دچار اشتباه و سردرگمي كند. تورفتگي به اين شكل است كه هنگامي كه يك بلاك جديد از برنامه آغاز ميشود، دستورات داخل آن بلاك نسبت به بلاك بيروني از چند كاراكتر جلوتر آغاز شود و تمام دستورات داخل آن بلاك زير هم و از چند كاراكتر جلوتر ادامه پيدا كنند. در صورتي كه درون آن بلاك نيز بلاك جديدي باز شد، باز هم دستورات آن نسبت به اين بلاك از چند كاراكتر جلوتر شروع شود. در صورت پايان يافتن آن بلاك نيز دستورات بعدي، به همان تعداد كاراكتر عقبتر ادامه پيدا كنند. معمولا در IDE زبانهاي برنامهنويسي، هنگامي كه چند كاراكتر به جلو برويم براي راحتي برنامهنويس، هر بار كه enter بزنيم، خط جديد از محل شروع خط قبلي آغاز ميشود و اين كار به طور خودكار تا هر جا كه لازم باشد انجام ميشود. يك نمونه از ساختار تورفتگي را در مثال زير مشاهده ميكنيد:( )function fbegin……If (…) thenbegin……If (…) then……;end;endبه دليل اينكه فاصلههاي اضافي تاثيري در نتيجه برنامه ندارند گاهي ميتوان همه برنامه را نيز در يك خط نوشت و تمام دستورات را به دنبال هم قرار داد. اين كار به هيچ عنوان توصيه نميشود. براي راحتي درك برنامه بهتر است هر دستور در يك خط نوشته شود و دستورات بلند، حتيالامكان در جاي مناسبي به دو بخش يا بيشتر شكسته شده طوري كه انتهاي دستور از نمايشگر خارج نشود و در صورت چاپ آن روي كاغذ، عرض كاغذ براي تمام قسمتهاي آن دستور كافي باشد. گاهي نيز لازم است براي تاكيد بيشتر روي دو دستور كه به هم وابستهاند آنها را در يك خط نوشت. (در صورت كوتاه بودن دستورات) به طور كلي چينش چگونگي نظمبخشي به خطوط برنامه كاملا به سليقه برنامهنويس مربوط ميشود و توجه كافي در اين زمينه مسلما به نفع او بوده و در نتيجه كار او هم از نظر كيفي و هم زماني تاثيرگذار خواهد بود. نامگذاري مناسب بعضي زبانهاي قديمي در نامگذاري شناسهها محدوديت قائل ميشوند. اما اكثر زبانهاي امروزي نامگذاري شناسهها با طول بلند را نيز جايز ميشمارند. ميتوان از اين قابليت نيز در جهت بالا بردن خوانايي برنامه و توانايي درك آن استفاده كرد. به عنوان مثال در يك برنامه براي نگهداشتن «نام پدر» ميتوان از متغيري به نام A استفاده كرد. يا با كمي تخفيف از حرف F (حرف اول كلمه Father) استفاده كرد! اما اين يك اشكال بزرگ دارد. اگر شخص ديگري برنامه شما را ببيند متوجه نميشود كه در منطق برنامه شما، متغير a يا f براي نگهداري چه مفهومي در نظر گرفته شده است. خود برنامهنويس نيز ممكن است پس از گذشت مدت زمان طولاني، با رجوع به برنامه خود، به خاطر نياورد كه a يا f را به چه منظوري تعريف كرده است. بنابراين بهتر است براي متغيرها نام مناسب و مربوط به محتواي آن انتخاب كنيم. مثلا در مثال قبل، انتخاب شناسه father name در هر زمان براي هر كسي گوياي اين خواهد بود كه اين متغير براي نگهداري «نام پدر» در نظر گرفته شده است. برخي برنامهنويسان با دانستن اين مساله باز ترجيح ميدهند از نامهاي كوتاه استفاده كنند و دليل آنها براي اين كار نيز سادگي و سرعت تايپ و جلوگيري از خط در تايپ نامهاي طولاني است. اين دليل در ويراستارهاي قديمي تا حدي قانع كننده است. اما در ويراستارهاي جديد اغلب امكاني به نام Autocomplete وجود دارد كه به برنامهساز امكان ميدهد با كمترين ميزان تايپ و تنها با وارد كردن حروف اول شناسه، گزينه مورد نظر خود را از ليست ظاهر شده به راحتي انتخاب كند. اين امكان، هم سرعت را افزايش ميدهد هم اشتباه تايپ را از بين ميبرد و هم امكان نامگذاريهاي بلندتر را بدون اشكال ميسازد.دليل ديگري نيز براي برنامهنويسان جهت استفاده از نامهاي كوتاه و بيمفهوم وجود دارد و آن بالا بردن امنيت كد است. به عبارتي آنها بر اين اعتقادند كه ما ميدانيم هر چيز را براي چه استفاده كردهايم و يا در جايي براي خودمان ثبت ميكنيم. اما ميخواهيم اگر تصادفا اين كد دست بيگانه افتاد، در درك آن دچار مشكل شود و از آن سر درنياورد. اين توجيه تا حدي قابل قبول است. حتي امروزه نرمافزارهايي وجود دارند كه كد برنامههاي متن باز مثل جاوا اسكريپت يا Php را به شكلي درميآورند كه درك آن تا حد امكان مشكل شود و به اين ترتيب امنيت آن را در برابر سرقت بالا ميبرند.مستندسازييكي از مهمترين كارهايي كه يك برنامهنويس بايد در برنامهنويسي خود رعايت كند مفهوم مستندسازي يا Self Documenting است. بعد از اين كه اين مفهوم را توضيح داديم، هميشه آن را به خاطر داشته باشيد و در برنامهنويسي خود از آن استفاده كرده و قواعد آن را در برنامه خود رعايت كنيد.هر زبان برنامهنويسي، از اسمبلي گرفته تا جديدترين زبانها امكاناتي براي قرار دادن توضيحات يا Comment در برنامه در نظر گرفتهاند. مثلا در زبان اسمبلي اگر بعد از دستوري علامت سمي كالن (;) قرار دهيد اسمبلر تا پايان خط را ناديده ميگيرد و به خط بعد ميرود. در نتيجه شما ميتوانيد بعد از سمي كالن هر چه دلتان ميخواهد در برنامه بنويسيد. در زبان C++ و دلفي، سمي كالن يك كاراكتر اصلي و مهم است كه هر دستور بايد با آن پايان يابد، اما استفاده از دو backslash پشت سر هم (//) در هر كجاي برنامه باعث ميشود كه تا انتهاي خط توسط كامپايلر ناديده گرفته شود و نوشتههاي بعد از آن هيچ گونه تاثيري در خروجي برنامه و فايل نهايي نخواهند داشت. امكان اضافه كردن توضيحات چندخطي يا بخشي از يك خط نيز وجود دارد. در C++ استفاده از /*…*/ و در دلفي {…} براي اين نوع توضيحات به كار ميرود. در واقع كامپايلر در C++ بعد از ديدن /* و در دلفي بعد از ديدن { آنقدر كاراكترهاي بعدي را ناديده ميگيرد تا به ترتيب در C++ و دلفي به */ و } برسد.بنابراين شما ميتوانيد شروع هر بخش، پايان هر بخش، دليل استفاده از يك متغير، مقداري كه انتظار ميرود يك متغير در جايي داشته باشد، كاري كه يك دستور يا يك تابع انجام ميدهد و هر آنچه كه فكرش را ميكنيد در برنامه اضافه كنيد تا هم خودتان و هم هر كس ديگر كه برنامه را ميخواند كل منطق آن را متوجه شود. به ساختار يك نمونه توضيحات گذاري در دلفي توجه كنيد:a function for Input // ( )Function fBeginIf p = = 1 {Input is ready} then…Endدر مثال فوق عبارت a function for input و هر آنچه بعد از آن تا پايان خط بيايد همچنين نوشتههاي داخل { } يعني Input is ready توسط كامپايلر ناديده گرفته ميشود و ميتواند حتي به زبان فارسي باشد.بنابراين شما مشخص كردهايد كه تابع ( )f براي گرفتن ورودي است و وقتي متغير P برابر يك شود يعني ورودي آماده است. به كدي كه در آن توضيحات گذاري به ميزان كافي رعايت شده باشد يك كد مستندسازي شده يا خودمستندسازي شده گفته ميشود و اين نوع امتياز بالايي خواهد داشت.منبع : جام حم الف
این صفحه را در گوگل محبوب کنید
[ارسال شده از: راسخون]
[مشاهده در: www.rasekhoon.net]
[تعداد بازديد از اين مطلب: 518]