بی شک این فضا و حالت را همه ما نرم افزار چی ها تجربه کرده و می کنیم، کدهایی که حتی اگر خودمان هم نوشته باشیم به وضوح غیر قابل کنترل شده و نیاز به باز نویسی دارند.
این سردرگمی ها از کجا می آیند، مگر نه اینکه این کد را ما خود، یا همکاری همچو ما نوشته است؟ چرا این دستنوشته ها چنان رم میکنند و عصیانگر می شوند؟!
وقتی متدی با 10 خط کد دارید ضریب پیچیدگی کد نسبت به زمانی که در همان متد 5 خط کد دارید که همان کار را انجام میدهد، 2 برابر نیست! حد اقل 3، شاید هم 4، 5 و بیشتر، برابر خواهد بود، آنارشی ناشی از تجمع کدهای سیستم در یک المان -اسمبلی،ماژول،کلاس و متد- رشدی خطی ندارند و با افزایش میزان کد در هر یک از این المانها پیچیدگیشان هم افزایی سهمگینی را موجب می شوند تا جایی که هزینه بازنویسی سیستم از ابتدا نسبت به نگهداری این کدهای یاغی کمتر خواهد بود.
چاره چیست؟!
راه چاره را نیاکانمان سالها پیش در نصیحتی حکیمانه و حاکم پسند به حکامشان که از چموشی های رعیت عصیانگر به ستوه آمده بودند عرضه کرده اند "تفرقه بینداز و حکومت کن".
در عالم نرم افزار تفرقه را Decomposition می گویند.
اگر متدی بزرگ است بشکنیدش به چند متد کوچکترِ خوشنام که وظیفه هر یک را از نامشان بتوان حدس زد، به هر متد تنها یک مسئولیت بدهید، تاکید می کنم مسئولیت نه کار، برای انجام یک مسئولیت باید مجموعه ای از کارها را انجام داد، برای مثال مسئولیت بازیابی اطلاعات از بانک اطلاعاتی، مستلزم اتصال به بانک، ایجاد دستور لازم برای بازیابی داده و اجرای دستور و برگرداندن مقدار های بازیابی شده است.
اگر کلاس تغیانگر و فربه ای دارید به چند کلاس خردش کنید، آنچنان که تفزقه میانشان آن هم افزایی آزار دهنده را موجب نشود.
اگر مجموعه ای از کلاسها دارید که اسمبلی غول آسایی را ساخته اند، میان کلاسهایش تفرقه بی اندازید. چند اسمبلی شان کنید، به تنهایی کامپایلشان کنید، تعویضشان کنید، دیباگش کنید و هر بلایی دلتان می خواهد سرش بیاورید.
الان است که می توانید چموش ترین و شرترین متد، کلاس و یا اسمبلی را به گوشه ای از محیط توسعه بکشانید و هر جور که میخواهید زیر و زبرش کنید بی آنکه دیگر رفقایش به دادش برسند.
اما در
این میان هنگام Decomposition
نباید نکته بسیار مهمی را فراموش کرد
Responsibility Assignment!
به عبارتی هر Decomposition ی خوب نیست، Decompositionی مناسب است که شما را در مواجهه با المانهای منفرد شده نیازمند تفسیر کارهایی از جنس مختلف نکند، یا المانی را برای انجام کارش به المانهای بیشماری وابسته نکند، به یک المان کارهایی از یک جنس را که اطلاعات و تخصص لازم برای آن را دارد، بدهید، برای مثال در المانهای UI ای باز کردن و بستن اتصالها به بانک اطلاعاتی پیچیده کردن وظایف است و در کلاسهایی که با بانک اطلاعاتی کار می کنند بازی با UI چیزی جز پیچیده ترکردن کد سیستم نیست.
خلاصه آنکه اگر می بینید مجموعه ای از کارها آنقدر به هم وابسته و شبیه هستند که مسئولیت واحدی را تکمیل می کنند آن را به المانی جدا بسپارید، این المان می تواند، یک متد،کلاس، اسمبلی، سرویس یا حتی زیر سیستم باشد.
Decomposition را اگر با Responsibility Assignment آگاهانه انجام دهید، بی شک می توانید در طول فرآیند کد نویسی و دیباگ چاییتان را گرم تر از قبل بنوشید.
حاح عباس خاطرهای زیبا از گفتوگوی صمیمانه عربی بیابان نشین با حضرت ابوالفضل (ع) را باز می گوید که قبل از حکومت صدام در زمان حکومت احمد حسین البکر اتفاق افتاده است و اضافه میکند این ماجرا – که به چشم خویشتن دیدهام – از قشنگترین و به یاد ماندنیترین خاطرههای من است: رفیقی داشتم به نام «ملا نای» با هم خیلی محشور بودیم و نسبت به هم اخلاص و علاقهای وافر داشتیم، خدا او را بیامرزد.
ظهر یک روز تابستانی در حرم حضرت ابوالفضل (ع) به صحبت نشسته بودیم که عربی بیابان نشین را دیدم، پا برهنه با پیراهنی کهنه و چفیه و عقالی کهنه، وارد حرم شد و به طرف ضریح مظهر رفت دست بر ضریح گذاشت و با صمیمیترین وصفناپذیر با حضرت به گفتوگو ایستاد.
- «آقا ابوالفضل، سلام علیکم. اشلونک؟ یعنی حالت چطور است؟
حالت خوبه انشاءالله؟ سالمید آقا؟
بعد با همان لحن خودمانی، ادامه داد: «الحمدالله، دست شما را میبوسم، نه نه خوبم. پدر و مادرم سلام رساندند.
آقا! خیلی خوبم…. الحمدالله دست شما بر سرمان هست. راحت هستیم.»
عرب بیابان نشین مانند کسی که حضرت را به چشم میبیند، با حضرت به گفتوگو مشغول بود. حیف بر ما که نه چیزی میبینیم و نه می شنویم!
«آقا جان! میدانی که من عیال و بچههایم و پدر و مادرم را در بیابان تنها گذاشتم و پیش شما آمدهام اجازه بدهید که بروم».
معلوم است که حضرت ابوالفضل (ع) به او میفرمایند: «هنوز وقت دارید بیشتر اینجا بمانید!»
عرب گفت: «میدانی آقا! امسال مرکب سواری نداشتم، از آنجا تا اینجاپ پیاده آمدهام. پاهایم خیلی درد میکند. یک کاری بکن که دوباره برگردم. پاهایم را شفا بده!»
بعد یک پایش را روی ضریح گذاشت دور پاشنه پاهایش ترک خورده و مجروح بود در همان حال میگفت: «آقا این، این، اینجا آقا!»
جای جراحت را به آقا نشان میداد و میگفت «آقا! جانم فدای دستت!»
من و ملاناجی – حیران از این ماجرا – شاهد بودیم که زخمها محو شد و ترک ها جوش خورد.
عرب پای دیگر را به طرف ضریح گرفت و گفت: «الاحسان بالاتمام» یعنی نیکی را باید به آخر رساند و تمام کرد.
پای دیگر را هم دیدیم که خوب شد. عرب بیابان نشین با همان صمیمت رو به ضریح کرد و گفت: «ابوالفضل، آقاجان، ببخش، اروح – یعنی میروم – آخر پدر و مادرم چشم انتظارند. آقا! اجازه میدهی بروم؟»
اجازه گرفت و گفت: «فیامان الله، خداحافظ، فی امان الله، فی امانالله، فی امانالله».
عرب بیابانی که میرفت، ملاناجی به او سلام کرد و گفت: «قبول باشد زیارت قبول. آقا را زیارت کردی؟»عرب گفت: بله زیارت کردم. برو زیارتش کن. برو. برو زیارتش کن!
ملاناجی با آن علم و مقاماش نمیتوانست به عرب بیابانی بگوید که «نمیبینم، نمیتوانم ببینم».
عرب افزود: «مگر نمیبینی، ابوالفضل(ع) قامتاش مانند کوه پابرجاست چرا نمیبینی؟ ابوالفضل در مقابل توست، دارد تو را نگاه میکند برو، برو زیارتش کن!
ملاناجی – همچنان حیرت زده گفت: «چشم، چشم!»
و عرب پابرهنه از حرم خارج شد.
منبع : شبکه خبری قم
show version
در زیر می تونید یک نمونه از خروجی این دستور رو ببیند:farhadnia@Shafagh> show version
Hostname:Shafagh
Model: srx650
JUNOS Software Release [10.4R7.5]
farhadnia@Shafagh#set system host-name Your-Host-Name
اولین نکته برای انجام یک کانفیگ باید از دستور set قبل از فرمان استفاده می کنید. و همینطور برای غیر فعال کردن یک دستور قبل از دستور از فرمان delete استفاده می کنید مثال:farhadnia@Shafagh#delete system host-name Shafagh
برای خروج از هر mode کافیه که دستور exit رو بزنید.farhadnia@Shafgh# set system root-authentication plain-text-password
در فرمان باید یعد از زدن کلید اینتر پسورد جدید رو وارد می کنید. توجه داشته باشید که با انتخاب گزینه encrypted-password fi به جای plain-text-password می تونید رمز رو به صورت رمز شده وارد کنید یعنی مشابه انتخاب عدد 7 در سیسکو.