خلاصه کتاب Pragmatic Programmer. درس 16

فصل سوم: The Basic Toolsدرس 16: قدرت متن ساده (The Power of Plain Text)به عنوان یک برنامه نویس عملگرا، ابزار ما چوب و آهن نیست، ابزار ما دانشه. ما نیازمندیهای سیستم رو به عنوان دانش جمع آوری میکنیم، و اون رو تبدیل میکنیم به طراحی، پیاده سازی، تست و داکیومنت ها، و این برای ما ثابت شده است که بهترین فرمت ذخیره کردن دانش، متن ساده است. با متن ساده ما این توانایی رو داریم که اونها رو مدیریت و ویرایش کنیم هم به صورت دستی و هم با کد نویسی و ابزارهای زیادی هم برای اینکار در اختیار داریم.مشکل فرمت باینری یا حتی انکریپت شده برای این کاربرد، اینه که علاوه بر خوده دیتا مسئله نحوه فهمش رو داریم و باید اونو پارس کنیم تا متوجه محتواش بشیم.متن ساده چیست؟ What is Plain Textکاراکترهای چاپ شده قابل فهم، دقیقا به سادگی یک لیست خرید• شیر ، قهوه ، پوشکیا پیچیده تر مثل متن این کتاب. اطلاعات بخش مهمه متن هست مثلا متن زیر کاربردی نیست:hlj;uijn bfjxrrctvh jkni'pio6p7gu;vh bjxrdi5rgvhjاینم کاربردی نیست:Field19=467abeخواننده هیچ درکی نداره از اینکه 467abe چیه، ما متنهامون باید قابل فهم باشه برای خواننده اون.متن ساده به این معنا نیست که حتما باید بی ساختار هم باشه، مثلا HTML, JSON, YAML همگی متن ساده هستند.چند دلیل مهم وجود داره که پروتکل های مهم شبکه مثل HTTP, SMTP, IMAP از این فرمت ها استفاده میکنند:- بیمه در برابر کهنگی- استفاده از ابزارهای موجود- تست راحت تر• بیمه در برابر کهنگی:فرمت قابل فهم برای انسان و همچنین دیتایی که خودش داره توصیف میکنه معنی و کارکردشو، زنده میمونه، هرچند اپلیکیشنی که تولیدش کرده یا ازش استفاده میکرده عمرش به پایان رسیده باشه.ما به محض اینکه فرمت دیتا رو بدونیم میتونیم به راحتی پارسش کنیم، در بدترین حالت باینری شده است که باید اطلاعات دقیق فرمت شدنش رو بدونیم. مثلا دیتای زیرو در نظر بگیرید که در اپلیکیشنی برای نگهداری کد امنیتی کاربران بوده:<FIELD10>123-45-6789</FIELD10><FIELD10>567-89-0123</FIELD10><FIELD10>901-23-4567</FIELD10>خوب با این فرمت ما میتونیم راحت یک برنامه بنویسیم برای دیتکت کردنش و شماره ها رو که دیتای اصلی ان در بیاریم، حالا فرض کنید اینجوری میبود:AC27123456789B11PXY43567890123QTYL6T2190123456788AMتو این حالت هم میشه کشید بیرون شماره مد نظرو منتهی کارمون سخت تر شد توی درک ساختار و فرمتش. حالا فرض کن اینجوری باشه:<SOCIAL-SECURITY-NO>123-45-6789</SOCIAL-SECURITY-NO>اینجوری عالی شد، قابل فهم ترین و روتین ترین فرمتی که میتونست باشه و اینجوری بیمه میکنیم که این دیتا زنده میمونه حتی اگر اپلیکیشنش هم بره تو باقالیا.• استفاده از ابزارهای موجود:قطعا هر ابزاری توی دنیای برنامه نویسی از سورس کنترل بگیر تا کامند لاین تولز میتونن با متن کار بکنند و هندلش کنن. فرض کنید یک اپلیکیشن رو پابلیش کردید توی محیط پروداکشن و فایل کانفیگش هم یک متن ساده است حالا در هر فرمتی ایکس ام ال، جیسون و ... به راحتی سازگاره با سورس کنترل، قابل فهم و دیباگ سریعه اگر مقداری اشتباه ست شده باشه، با ابزارهایی مثل diff , fc, sum که برای بررسی تغییرات فایل هستن سازگاری داره و اوکیه.• تست راحت تروقتی از متن در دیتایی که برای تست استفاده میشه استفاده کنیم، خروجی قابل فهم تر و همچنین خروجی تست های رگرسیونو میتونیم با شل اسکریپت یا کامند به راحتی پراسس و اتومیت کنیم.** حتی در آینده و سیستم های بلاک چین بیس برای انتقال دیتا بین نودها از فرمت متن استفاده می شود و تنها چیزی که مدنظر دارند این است که فرمت دیتای مبادله شده برای نودها قابل فهم و استاندارد باشد.دروس مرتبط: 17, 21, 32منبع کانال تلگرامی: https://t.me/pragmaticprogrammer_fa