<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های Mahdi Azadbar</title>
        <link>https://virgool.io/feed/@mahdiazadbar</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-18 07:37:15</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/4301/avatar/avatar.png?height=120&amp;width=120</url>
            <title>Mahdi Azadbar</title>
            <link>https://virgool.io/@mahdiazadbar</link>
        </image>

                    <item>
                <title>تجربه استفاده از نقشه های ایرانی در برنامه اندروید</title>
                <link>https://virgool.io/@mahdiazadbar/%D8%AA%D8%AC%D8%B1%D8%A8%D9%87-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D9%86%D9%82%D8%B4%D9%87-%D9%87%D8%A7%DB%8C-%D8%A7%DB%8C%D8%B1%D8%A7%D9%86%DB%8C-%D8%AF%D8%B1-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF-trc4b8oos2l2</link>
                <description>با سلام و احترامبعد از قطع شدن و اینترنت در آبان 98 و تهدید کسب و کارهای اینترنتی که به سرویس های خارجی مرتبط بودن و به طبع ما برنامه نویس های اندروید هم دچار مشکلات بسیاری شدیم. از جمله اینکه نقشه های گوگل دیگه کار نمی کردن. توی پروژه زیست اپ یکی از پروژه های من که از نقشه استفاده میشد مجبور شدیم که سرویس رو بیاریم روی نقشه داخلی.  بعد از بررسی دیدم ک دو تا نقشه ایرانی داریم. ابتدا رفتیم روی نقشه نشان نقشه نشان پیاده سازی کامللا متفاوتی نسبت به گوگل مپ داره. و خیلی از کدها باید تغییر کنه. البته کلیه مستنداتش موجوده و میشه قدم به قدم جلو رفت. خلاصه بعد از کلی تغییر کد نقشه پیاده شد. اما در ادامه  رو منصرف کرد. و مهمترین نکته حجم برنامه بود که 20 مگابایت به برنامه اضافه میکنه. که این به دلیل اضافه شدن ndk برای cpu  های مختلف هستش. توی مستندات میگه که کد پایین رو اضافه کن تا حجم برنامه کم بشه. اون تیکه کد فقط باعث میشه که ndk  یک مدل cpu  به برنامه اضافه بشه. و در باقی مدل های cpu  برنامه به مشکل بخوره. بعد از کلی کلنجار رفتنو نتونستیم با این مورد کنار بیایم. و حجم برنامه نیشد که 20 مگابایت اضافه بشه و این مورد رو کنسل کردیممورد بعدی نقش مپ بود این نقشه از لحاظ پیاده سازی بسیار شبیه کد گوگل هستش و پیاده سازی آسونتری داره. و خودش از mapbox  استفاده می کنه. و حجم برنامه حدودا 5 مگ اضافه میشه. هرچند کم نیست ولی خیلی بهتر از نشان است. منتها بعد از پیاده سازی و بررسی بیشتر در ادامه دیدیم که در روز حدود 10 هزار درخواست رایگان داره ئ درخواست هر tile  نقشه رو یک درخواست مساحبه میکرد. مثلا برای پیدا کردن ادرس خودم در نقشه چیزی در حدود 300 درخواست ثبت شده بود که و پنل اولش با 40 هزار درخواست رایگان ماهیانه 500 هزار تومن بود که اصلا صرفه اقتصادی نداشت. در نتیجه به این نتیجه رسیدیم که &quot;هر کسی کو دور ماند از اصل خویش. باز جوید روزگار وصل خویش&quot; و درنهایت برگشتیم به نقشه گوگل. و نقشه مپ رو در حالت بک آپ قرار دادیم تا در زمان مشکل به اون رجوع کنیم. به امید تجربه دنیای بدون مرزا</description>
                <category>Mahdi Azadbar</category>
                <author>Mahdi Azadbar</author>
                <pubDate>Sat, 14 Dec 2019 16:40:03 +0330</pubDate>
            </item>
                    <item>
                <title>ایده‌ها، تکنیک‌ها و مهارت های برنامه نویسی تمیز و حرفه ای</title>
                <link>https://virgool.io/@mahdiazadbar/%D8%A7%DB%8C%D8%AF%D9%87%D9%87%D8%A7-%D8%AA%DA%A9%D9%86%DB%8C%DA%A9%D9%87%D8%A7-%D9%88-%D9%85%D9%87%D8%A7%D8%B1%D8%AA-%D9%87%D8%A7%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%AA%D9%85%DB%8C%D8%B2-%D9%88-%D8%AD%D8%B1%D9%81%D9%87-%D8%A7%DB%8C-ywlmwaolpxwj</link>
                <description>  برنامه نویس های خوب بر اساس کیفیت کدهایشان تعریف می شوند. در نرم افزار، نوشتن کد خوب و تمیز به این معنی است که پولتان را برای تست، بروزرسانی، و توسعه کدهای خود خرج کنید تا اینکه این هزینه را برای رفع اشکالات هزینه کنید. در این مقاله، به شما مثالهای واقعی از استفاده برخی تکنیک‌ها برای تمیز نگهداشتن کد، و اصلاح آن برای قوی تر شدن(بدون باگ شدن) و ماژولار شدن، ارایه خواهیم کرد. این تکنیک ها نه تنها به شما برای اصلاح کدهای قدیمی کمک می‌کنند. بلکه می‌تواند به عنوان یک تصویری ذهنی خوب برای شما عمل کند تا از این به بعد به صورت تمیز کد بنویسید.اصلاح کد[1] چیست و چرا به ان احتیاج داریم؟اصلاح کد به تکنیک ها و قدم هایی که برای نوشتن کد تمیز به شما کمک می کند اشاره دارد. این برای سایر برنامه نویسان هم مهم می‌باشد، کسایی که کد شما را میخوانند، توسعه می‌دهند و از آن استفاده مجدد میکنند بدون اینکه نیاز به تغییرات زیادی داشته باشند. در ادامه ما مثالهایی برای اصلاح و بهینه تر کرد کدهایتان خواهیم دید.هرگز کدهایی که تست واحد[2] ندارند را اصلاح نکنید.توصیه ابتدایی من این است که هیچ موقه شروع به اصلاح کدهایی که برای آنها تست وجود ندارد نکنید. احساس میکنم دلیل آن روشن باشد: شما با توابعی مواجه می شوید که هیچ ایده‌ای در مورد طرز کار انها ندارید. پس اگر شما میخواید کدها را اصلا کنید با تست های نوشته شده برای آن شروع کنید. مطمین شوید که کدهایی که میخواهید اصلاح کنید توسط تست ها پوشش داده شده باشند. در مورد پوشش کد[3] در زیان برنامه نویسی مورد نظرتان جستجو کنید. از داخلی ترین بخش کدها، اصلاح را شروع کنید. به تصویر زیر نگاه کنید. این یک عکس از یک پروژه مدیریت هتل به زبان PHP است که روی Github  بود برداشته شده است. همان طور که در این متد می‌بینید، سه مرحله توسط خطوط قرمز رنگ مشخص شده است. داخلی ترین بخش، if / else می باشد که که در درون بخش کد شرطی if ابتدایی می باشد. معمولا، با تمرکز بر داخلی‌ترین سطح، اصلاح کدها آسان تر می شود. یک متد بزرگ را به متد های کوچکتر تقسیم کنید. در این مثلا بالا، ما میتوانیم داخلی ترین بخش را به یک متد private  تغییر دهیم.برای داخلی‌ترین بخش بعدی، متد add() را ببینید که پس از اصلاح کد، تمیزتر، خواناتر و قابل تست شد. همیشه از {} برای دستور if استفاده کنید. اکثر زبان های برنامه نویسی دستورات شرطی تک خطی پشتیبانی می‌کنند، و اکثر برنامه نویس ها به دلیل سادگی از آن استفاده میکنند، اما باید توجه داشت که کدهای تک خطی خوانایی ندارند و یک خط خالی ممکن است منطق برنامه را عوض کند و مشکلاتی را در خوانایی و اجرا بوجود بیاورد. از اعداد و متن های جادویی استفاده نکنید. در مثال بعدی، میبینید که اگر  rooms از 250 بیشتر باشد، یک متن خطا بر می‌گرداند. در این مورد، 250 یک عدد جادویی است. اگر شما برنامه نویسی باشید که این کد را ننوشته باشید، برای شما مشکل است که بفهمید این عدد چه مفهومی دارد.برای اصلاح این کد، ما در نظر میگیریم که که 250 حداکثر تعداد rooms میباشد. با این حال، به جای استفاده مستقیم از اعداد یا متن ها (hardcoding) ما میتوانیم آن را به یک متغییر $maxAvailableRooms نسبت دهیم. حالا این کد برای سایر برنامه نویس ها هم قابل فهم می باشد. از دستور else استفاده نکنید، اگر به آن احتیاج ندارید:در متد ()availablerooms در مثال قبل به کد if توجه کنید. ما به راحتی می توانیم else را حذف کنیم در حالی که منطق برنامه حفظ شود. از نامگذاری با معنی، برای متدها، متغییرها، و تست ها استفاده کنید. در مثال بعدی، شما دو متد از از برنامه مدیریت هتل مشاهده میکنید. Index()  و  room_m()، من نمیتوانم هدف این متد هها را متوجه شوم. و اگر این نام ها، نامهای توصیفی بودند، قابلیت خواندن و فهم برنامه به مراتب بیشتر می شد. از حداکثر قابلیت های زبان برنامه نویسی مدنظرتان استفاده کنید. اکثر برنامه نویسان از قدرت و امکانات زبان برنامه نویسی که استفاده می‌کنند آگاه نیستند. خیلی از این ویژگی ها می تواند سختی های برنامه نویسی را کاهش دهند و کدهای قویتری را برای شما ایجاد کنند. به مثال بعد نگاه کنید. شما می توانید از کد بسیار کمتر برای یک خروجی یکسان به وسیله استفاده از code hinting استفاده کنید. این مطلب رو با چندتا توصیه کوچک برای کدنویسی بهتر تموم میکنیم:متدهای public را بهتر است نامهای کوتاه توصیفی داشته باشند. اما متدهای private  میتوانند نامهای بلندتری داشته باشند به دلیل اینکه یک محدوده مشخصی را در بر دارند.از نامهای عمومی برای interface ها استفاده کنید مانند add.   و از نامهای توصیفی برای کلاسهای با یک متد استفاده کنید. مانند addUser یا addDocumnet.متد های بلااستفاده را حذف کنید.از پیشوند is/has برای توابعی که مقدار Boolean بر میگرداند استفاده کنید. مانند (isAdmin($user یا (hasPermission($user.همیشه سطح دسترسی کلاس‌ها و متدها را مشخص کنید.همیشه قاعده single Responsible از اصول SOLID  را رعایت کنید. مطالب بیشتر:- Software Architecture — The Difference Between Architecture and Design - Software Architecture: Architect Your Application with AWS - Write clean code and get rid of code smells with real life examplesمنبع:https://medium.com/@maladdinsayed/advanced-techniques-and-ideas-for-better-coding-skills-d632e9f9675    [1] Refactoring[2] Unit teste[3] Code coverage </description>
                <category>Mahdi Azadbar</category>
                <author>Mahdi Azadbar</author>
                <pubDate>Mon, 11 Feb 2019 23:11:06 +0330</pubDate>
            </item>
                    <item>
                <title>کد عالی = کد تمیز و کد زیبا</title>
                <link>https://virgool.io/@mahdiazadbar/%DA%A9%D8%AF-%D8%B9%D8%A7%D9%84%DB%8C-%DA%A9%D8%AF-%D8%AA%D9%85%DB%8C%D8%B2-%D9%88-%DA%A9%D8%AF-%D8%B2%DB%8C%D8%A8%D8%A7-tdyi7pozhi6v</link>
                <description>کد عالی = کد تمیز و کد زیبا  یکی از کامل ترین تعریف ها در رابطه با کیفیت کد را رابرت مارتین(عمو باب) در جمله زیر ارایه میدهد:تنها واحد اندازه گیری دقیق کیفیت کد  لعنت بهش(what the fuck) / دقیقه هست.اجازه بدین مقداری بیشتر توضیح بدم.لعنت بهش (در حالت انزجار) - این کد بدرد ما نمیخورهلعنت بهش (در حالت تحسین) -  کسی که این کد رو زده باهوش بودهلعنت بهش ( در حالت ناراحتی) - این مزخرفات رو نمیفهممپس چه چیزهایی درنگاه اول با دیدن کد ما را تحت تاثیر خودش قرار میدهد؟در پاسخ میتوان گفت که یک کد تمیز و زیبا هست که ما رو تحت تاثیر خود قرار میدهد. و نوشتن یک کد تمیز و زیبا نشانِ حرفه ای بودن یک مهندس نرم افزار هست.برای یادگیری این مهارت مهندسی و ساختاری دو عامل وجود دارد : دانش و کار. دانش به شما کمک می‌کند تا الگوها، قواعد، شیوه ها و چیزهای جدید را یاد بگیرید تا چطور در حرفه خود بهتر باشید. اما کار و تلاش همراه با تمرین زیاد باعث می‌شود که این دانش با انگشتان، چشمها، و طرز تفکرتان اجین شود.پس، نوشتن کد تمیز کار سختی است. و احتیاج به عرق ریختن و تمرین مداوم دارد. باید «تمرین کرد، لغزید، شکست خورد، یادگرفت» و این چرخه را به صورت مدام تکرار کرد تا کاملا بر آن مسلط شد و متاسفانه هیچ راه ساده و یا ترفندی برای انجام درست آن وجود ندارد. در اینجا راههایی وجود دارد تا از نوشتن کد زیبا و تمیز لذت ببرید. چه چیزهایی را باید در نامگذاری رعایت کنیم. کنریک لامار (خواننده آمریکایی) یه جمله خوبی در این رابطه داره!وقتی من بخوام یک داستان واقعی رو بگم. اون رو با نام خودم شروع میکنم.در نرم افزار نامگذاری همه جا هستش. ما توابع، کلاس ها، آرگومانها، پکیج ها و همه چیز رو نامگذاری میکنیم. ما فایل‌ها، پوشه‌ها، و هر چیزی که مربوط به اون باشه رو نامگذاری میکنیم. ما همیشه در حال نامگذاری هستیم و این مهمترین بخش در تولید یک کد تمیز هست. نامگذاری باید هدف را مشخص کند. انتخاب نامهای خوب زمانبر هست اما زمانی که از ما صرف می‌کند خیلی ناچیز است و از بروز مشکلات بعدی جلوگیری می‌کند. پس در نامگذاری ها دقت داشته باشید و وقتی نام بهتری پیدا کردید آنها را تغییر بدهید. هرکسی که کد شما رو بخونه از این بابت از شما ممنون خواهد بود. همیشه به یاد داشته باشید که نام متغییر، توابع و کلاس ها باید سه سوال رو پاسخ بده:دلیل وجودش، کارش چیه، و چطور استفاده میشه؟ توابع باید فقط یک کار را انجام دهند. تمیز نوشتن توابع ماهیت یک کد تمیز می باشد. در اینجا دو نقش طلایی برای نوشتن توابع تمیز وجود دارد:آنها باید کوچک باشند.آنها باید فقط یک کار و آن را هم بدرستی انجام دهد. بنابراین این بدان معناست که توابع شما نباید بزرگ باشد تا بتواند ساختارهای توجیه شده را نگه دارد. بنابراین، سطح تورفتگی(دندانه کذاری) یک تابع نباید بیشتر از یک یا دو باشد. این روش باعث می شود خواندن، درک و هضم کد آسان تر شود. یک برنامه نویس خوب از امکانات زبان برنامه نویسی انتخابی خود برای ساخت کدهای غنی تر، واضح تر  و تمیزتر استفاده می کند که تا بتواند به عنوان یک قصه گو کامل عمل کنند.توضیحات برای کدهای بد نیستونوس ویلیام (تنیسور آمریکایی) میگه: هرکسی نظر خودش رو مینویسه. منتها از این نظرات هست که شایعات شروع می‌شوند توضیحات مانند یک چاقوی دو طرفه هستند. هیچ چیزی نمیتواند مفیدتر از یک توضیح خوب باشد. از سوی دیگر، هیچ چیز نمی تواند بیش از توضیحات پوچ  و بی فایده ای که فضا را مصرف می کند، به هم ریختگی ایجاد کند.  و هیچ چیز بیشتر از نظراتی که باعث به وجود آمدن اطلاعات اشتباه می‌شود نمی‌تواند گمراه کننده باشد. بنابراین به طور خلاصه، توضیحات برای کدها مضر هستند اما می توانند ضرروی باشند. نگهداری نظرات قدیمی سخت است و بیشتر برنامه نویس ها برای اینکه توضیحات را با کدهای خود تغییر نمی‌دهند، معروف هستند. کدها جابهجا میشوند و تکامل پیدا میکنند. بخش های مختلف یک کد در جاهای مختلف قرارداده می شود. ولی توضیحات این خصوصیت را ندارند و این مشکل ساز می‌شود. همیشه به یاد داشته باشید که کد تمیز و واضح با توضیحات مختصر به مراتب بهتر از کد های پیچیده و مقدار زیادی توضیحات است. وقت خود را با توضیح برای کدهای آشفته تلف نکنید این زمان را برای از بین بردن آشفتگی صرف کنید. قالب بندی کدها(نوع برنامه نویسی شما) همیشه در اولویت است. رابرت مارتین به صورت دقیق توضیح میده که:قالب کد در رابطه با ارتباط شما با دیگران برنامه نویسان است. و ارتباط با دیگر برنامه نویسان اولین قدم برای بهبود روابط کاری یک توسعه دهنده ی حرفه ای می‌باشد. جمله بالا را نباید دست کم گرفت به دلیل اینکه  یکی از مهمترین ویژگی های یک توسعه دهنده واقعا بزرگ است.قالب بندی کدها  یک پنجره برای ذهن شماست. ما می خواهیم مردم تحت تاثیر نظم، توجه به جزئیات و شفافیت تفکر شما قرار گیرند. اما وقتی که به کد نگاه کنیم، اگر آنها یک املت یا آش درهم ریخته باشند و سر و ته آنها مشخص نباشد، بدون هیچ شک و تردیدی از اعتبار شما کاسته خواهد شد. همیشه به یاد داشته باشید که شما برای سبک و نظم استفاده شده به خاطر سپرده خواهید شد نه صرفا به خاطر کدتان . بنابراین شما باید مراقب باشید که کد شما به سادگی قالب بندی شده است و توسط قوانین ساده قابل درک توسط تمام اعضای تیم اداره می شود.بررسی خطاهاجورج کانگییم(پروفسور دانشگاه MIT)  به درستی گفت.اشتباه برای انسان است، اما وقتی در خطا باقی بماند شیطانی است.بررسی خطا چیزی است که همه برنامه نویسان انجام می دهند. ورودی ها می توانند غیر طبیعی باشند و عملکرد برنامه را دچار مشکل نمایند. برنامه نویسان باید اطمینان حاصل کنند که برنامه آنچه را که مورد انتظار است، انجام دهد. با این حال، مسئله این نیست که به هر نحوی خطا را مدیریت کند، مسئله این است که خطا را در یک روش قابل خواندن در نظر بگیرد.بسیاری از کدها اصلی در  کدهای بررسی گم می‌شوند. و باعث جدا شدن  هدف و منطق کدها از هم می‌شود. وقتی این اتفاق می افتد یعنی ما دچار اشتباه است.کد باید پاک و قوی باشد و خطاها را در ظرافت و سبک مشخصی بررسی کند. این علامت یک هنرمند نرم افزاری عالی است.همیشه به یاد داشته باشید که هر استثنایی(exception)  که پرتاب(throw)  می‌کنید باید متناسب با اطلاعات کافی در مورد منبع و موقعیت را داشته باشد.همه اینها باهم استفاده کنید.اگر بخواهیم همه این موارد را در یک جمله جمع اوری کنیم چه باید گفت؟اینطور می‌توان بیان کرد که حسی که کد به ما می دهد؛ نرم افزار حاصل حس مشترک است.به گفته رابرت مارتین، &quot;نوشتن کد تمیز نیاز به استفاده منظم  و اعمال  تکنیک های کوچک دارد که تکنیک ها حاصل تجربه های ناخوشایند خودتان و دیگران است. این تکنیک های کوچک به طور کلی به نام حسِ کد  شناخته می شود.&quot;برخی از ما با آن متولد می‌شویم و بعضی ازما از طریق تمرین، سماجت و پشتکار آن را کسب می کنیم. این حسِ کد نه تنها به ما کمک می کند تا بین کد خوب و کد بد تفاوت را تشخیص دهیم، بلکه به ما در ایجاد استراتژی هایی برای تبدیل کد بد به کد خوب کمک می کند.این حسِ کد به برنامه نویس کمک می کند تا بهترین تغییرات و بهترین ابزار را برای هدایت او در تلاش برای ایجاد یک کد تمیز و زیبای کمک کند.به طور خلاصه، یک برنامه نویس با حس کد، یک نقاش است که می تواند یک صفحه خالی را به یک کار هنری زیبا تبدیل کند که در سالهای آینده به یاد می آید.همانطور که هارولد آابلسون به درستی خلاصه کرده است.برنامه ها باید برای افرادی که میخواهند بخوانند نوشته شود و فقط توسط ماشینها اجرا می‌شوند.منابع:“A handbook of Agile Software Craftsmanship” — Robert Martin.“A handbook of Agile estimation” — Mike Cohnhttps://medium.com/swlh/excellent-code-clean-and-beautiful-code-b541ca4b5a39 </description>
                <category>Mahdi Azadbar</category>
                <author>Mahdi Azadbar</author>
                <pubDate>Mon, 04 Feb 2019 10:12:00 +0330</pubDate>
            </item>
            </channel>
</rss>