Python Hints
پرسیدید چرا نویسنده میگه این مورد appalling هست؟ با اینکه بنظر رفتار خیلی خوبی میاد. من یک نمونه کد زدم که نشون بدم چرا بد هست این رفتار؛ توی این حالت من بیش از حد سخت گرفتم و همه چیز NewType هست (یا یک رفتاری رو نباید دنبال کنید یا کل کد باید یک استاندارد…
چیزایی که شخصا خیلی باهاشون مشکل دارم :
۳- وقتی این
هست؟ استفاده از اسم متغییر درست به توسعه دهنده بعدی به درستی میفهمونه که باید ایمیل استفاده کنه و نه چیز دیگری
اینجا باید ترجیح بدید که
۴- احساس امنیت کاذب؛ توی مورد ۱ به این موضوع اشاره کردم!
حالا بخش بدتر این قضیه کجاس ؟ دولوپرهای حواسپرت به mypy تکیه میکنند که دولپر دیگری از کدشون سواستفاده نکنه بجای اینکه دقیقا پارامتر ورودی رو بررسی کنند و اگر ایمیل ولید نیست ارور برگردونند.
۵- توی پایتون
کلاس بدون رفتار ؟
اینم موردی دیگه و یک
در نهایت :
چیز بدی نیست؛ جو گیری بده. وقتی سورس کد بزرگ هست و شما این موضوع رو بیش از حد پیش بردید اتفاقات قشنگی نخواهد افتاد.
دقت کنید این موارد حتی توی زبانهای کامپایلری و
خلاصه که هرچیزی رو در جای درست خودش استفاده کنید؛ این مورد یک فیچر هست توی پایتون که قطعا استفاده خواهد شد ولی بهتره درجای درست و برای مفهوم درست استفاده بشه!
کل صحبت نویسنده کتاب هم همین بوده که سعی کردم با مثال توضیح بدم.
۳- وقتی این
NewType
هیچ runtime
چکی نمیده؛ چه فرقی بین email: Email
email: str
هست؟ استفاده از اسم متغییر درست به توسعه دهنده بعدی به درستی میفهمونه که باید ایمیل استفاده کنه و نه چیز دیگری
اینجا باید ترجیح بدید که
Email
رو تبدیل به یک کلاس کنید که validation
های مختلف خودش رو هم حتما داشته باشه! ۴- احساس امنیت کاذب؛ توی مورد ۱ به این موضوع اشاره کردم!
حالا بخش بدتر این قضیه کجاس ؟ دولوپرهای حواسپرت به mypy تکیه میکنند که دولپر دیگری از کدشون سواستفاده نکنه بجای اینکه دقیقا پارامتر ورودی رو بررسی کنند و اگر ایمیل ولید نیست ارور برگردونند.
۵- توی پایتون
NewType
چون قوانین نامگذاری شبیه به Class
داره و البته که Syntax Highlight
هم مثل کلاس میبینه باعث سردرگمی میشه!کلاس بدون رفتار ؟
اینم موردی دیگه و یک
anti-pattern
دیگه در نهایت :
NewType
چیز بدی نیست؛ جو گیری بده. وقتی سورس کد بزرگ هست و شما این موضوع رو بیش از حد پیش بردید اتفاقات قشنگی نخواهد افتاد.
دقت کنید این موارد حتی توی زبانهای کامپایلری و
lowlevel
هم قفل هست.خلاصه که هرچیزی رو در جای درست خودش استفاده کنید؛ این مورد یک فیچر هست توی پایتون که قطعا استفاده خواهد شد ولی بهتره درجای درست و برای مفهوم درست استفاده بشه!
کل صحبت نویسنده کتاب هم همین بوده که سعی کردم با مثال توضیح بدم.
❤19🔥1
Python Hints
پرسیدید چرا نویسنده میگه این مورد appalling هست؟ با اینکه بنظر رفتار خیلی خوبی میاد. من یک نمونه کد زدم که نشون بدم چرا بد هست این رفتار؛ توی این حالت من بیش از حد سخت گرفتم و همه چیز NewType هست (یا یک رفتاری رو نباید دنبال کنید یا کل کد باید یک استاندارد…
image_2025-09-25_13-16-32.png
1.2 MB
نسخه با کیفیت تصویر
❤13👍2
Python Hints
توی معماری سیستم یک اصطلاحی داریم به اسم؛ distributed monolithic که خب یک anti-pattern هست برای معماری micro-service اول هفته با یک شرکتی برای مشاوره صحبت کردیم (کارشون رو قبول نکردم ولی یک قرارداد کوچک بستم برای اینکه بگم مشکل فعلی سیستم کجاس) معماری سیستم…
پیام دادید یک راهکار یا ... برای اینکه تست کنیم معماری که استفاده کردیم واقعاً
سوال جالبی بود و هیچوقت به این فکر نکرده بودم که چطوری میشه؛ یک تست سریع راه انداخت، اما بنظرم بهترین جواب هم توی خود ویژگیهای
تمام سرویسها اگر که باهم اجرا بشه؛ سیستم باید کار کنه!
اما اگر هر سرویس رو خاموش کنید (مثلاً برای ۵ دقیقه) باقی سرویسها باید بدون مشکل کار کنند، وقتی بعد از ۵ دقیقه اون سرویس خاموش شده رو روشن کردید، سیستم باید کامل کار کنه.
مثال: فرآیند خرید محصول (انسانی)
ثبت سفارش - تایید موجودی - تایید سفارش و صدور فاکتور - پرداخت - تایید پرداخت - آماده سازی - ارسال.
توی این فرآیند اگر واحد تایید موجودی؛ همه باهم رفته باشند ناهار، واحدهای دیگه از کار نمیافته!
ثبت سفارشات همگی انجام میشه، و واحدهای بعد از تایید موجودی هم تمام کارهایی که از قبل براشون ارسال شده رو انجام میدند اما کار جدید نخواهند داشت.
حالا بعد از ناهار که این واحد بر میگرده؛ اینطوری نیست که ثبت سفارشات به مشتریها گفته باشه چون واحد تأیید موجودی نیستند پس من سفارش نمیگیرم ازت؛ سفارشات رو یادداشت کردند وقتی واحد تأیید موجودی بر میگرده به یکباره همرو باهم بهشون تحویل میده.
خلاصه؛ یک بررسی سریع این هست، هرکدوم از سرویسهای شمارو که من برای ۵ دقیقه خاموش کنم، تمامی باقی سرویسها باید بتونند به درستی کارهای خودشون رو انجام بدند.
پ.ن:
سعی کردم مثالم خیلی ساده باشه (چون خودشون ذکر کردند جونیور هستند)
microservice
هست یا Distributed monolothic
پیشنهاد میدید ؟ سوال جالبی بود و هیچوقت به این فکر نکرده بودم که چطوری میشه؛ یک تست سریع راه انداخت، اما بنظرم بهترین جواب هم توی خود ویژگیهای
microservice
هست: تمام سرویسها اگر که باهم اجرا بشه؛ سیستم باید کار کنه!
اما اگر هر سرویس رو خاموش کنید (مثلاً برای ۵ دقیقه) باقی سرویسها باید بدون مشکل کار کنند، وقتی بعد از ۵ دقیقه اون سرویس خاموش شده رو روشن کردید، سیستم باید کامل کار کنه.
مثال: فرآیند خرید محصول (انسانی)
ثبت سفارش - تایید موجودی - تایید سفارش و صدور فاکتور - پرداخت - تایید پرداخت - آماده سازی - ارسال.
توی این فرآیند اگر واحد تایید موجودی؛ همه باهم رفته باشند ناهار، واحدهای دیگه از کار نمیافته!
ثبت سفارشات همگی انجام میشه، و واحدهای بعد از تایید موجودی هم تمام کارهایی که از قبل براشون ارسال شده رو انجام میدند اما کار جدید نخواهند داشت.
حالا بعد از ناهار که این واحد بر میگرده؛ اینطوری نیست که ثبت سفارشات به مشتریها گفته باشه چون واحد تأیید موجودی نیستند پس من سفارش نمیگیرم ازت؛ سفارشات رو یادداشت کردند وقتی واحد تأیید موجودی بر میگرده به یکباره همرو باهم بهشون تحویل میده.
خلاصه؛ یک بررسی سریع این هست، هرکدوم از سرویسهای شمارو که من برای ۵ دقیقه خاموش کنم، تمامی باقی سرویسها باید بتونند به درستی کارهای خودشون رو انجام بدند.
پ.ن:
سعی کردم مثالم خیلی ساده باشه (چون خودشون ذکر کردند جونیور هستند)
❤28👍8
Python Hints
خط ۱۴ تا ۱۹: همیشه اسمش رو Global بهش میدم تا همه بچههای تیم بدونند تحت هر ENV_STATE ایی که باشه این تنظیمات برای پروژه واجب هست. و بعد از این برای هر ENV_STATE یک کلاس جداگونه تعریف میشه؛ بعضی موارد ممکنه مقدار default داشته باشند مثل MONGO_DBNAME توی کلاس…
سمت ما
لزوماً خالی نیست؛ خیلی وقتا تنظیمات خاص و راحت تر و ... داخلش هست
و یا حتی re-export برای راحتی بیشتر کاربر.
__init__.py
لزوماً خالی نیست؛ خیلی وقتا تنظیمات خاص و راحت تر و ... داخلش هست
و یا حتی re-export برای راحتی بیشتر کاربر.
👍27❤9🔥1
برای اولین باز :
شخصا این کتاب رو هنوز نخوندم (۲ فصل فقط)
با توجه به مطالب اخیر؛ سوالات زیادی برام اومده راجب معرفی منبع! و خیلی از دوستان خواستند که هرچه زودتر این اتفاق بیوفته.
این کتاب رو یکی از دوستان به من هدیه داده (که خب هنوز وقت نکردم خوندنش رو کامل کنم) توی کانال @pyrust درگیری این مدتم رو نوشتم.
اما چون خودش خونده و بسیار تعریف میکرد؛ منم توی یک مرور سریع دیدم راجب بسیاری از مفاهیم مهم به خوبی صحبت شده گفتم معرفی کنم.
برای اونهایی که واقعا نیاز دارند به این موضوعات درحال حاضر پیشنهادش میکنم. اما اگر کتابهای دیگه که معرفی شده رو نخوندید میتونید صبر کنید تا شخصا کتاب رو بخونم و بعد نظر دقیقتر بدم!
به همین دلیل این پست رو هشتگ نمیزنم که قاطی باقی کتابهای اصلی نشه!
شخصا این کتاب رو هنوز نخوندم (۲ فصل فقط)
با توجه به مطالب اخیر؛ سوالات زیادی برام اومده راجب معرفی منبع! و خیلی از دوستان خواستند که هرچه زودتر این اتفاق بیوفته.
این کتاب رو یکی از دوستان به من هدیه داده (که خب هنوز وقت نکردم خوندنش رو کامل کنم) توی کانال @pyrust درگیری این مدتم رو نوشتم.
اما چون خودش خونده و بسیار تعریف میکرد؛ منم توی یک مرور سریع دیدم راجب بسیاری از مفاهیم مهم به خوبی صحبت شده گفتم معرفی کنم.
برای اونهایی که واقعا نیاز دارند به این موضوعات درحال حاضر پیشنهادش میکنم. اما اگر کتابهای دیگه که معرفی شده رو نخوندید میتونید صبر کنید تا شخصا کتاب رو بخونم و بعد نظر دقیقتر بدم!
به همین دلیل این پست رو هشتگ نمیزنم که قاطی باقی کتابهای اصلی نشه!
❤🔥16❤9