Normal Developer
506 subscribers
125 photos
45 videos
8 files
69 links
اینجا سعی میشه که تجربه های شخصی، اموزش و نکاتی که شاید بدرد بقیه هم بخوره Share بشه

1727676055
Download Telegram
برنامه نویس خوب راحت جایگزین میشه!
چرا؟

- نیازی نیست خودشون روند کار رو توضیح بدن
- کدشون رو میشه راحت تغییر داد
- داکیومنت کارشون رو مینویسن
- کدشون با تستای خوب سنجیده شدن

ولی یه برنامه نویس بد قابل جایگزینی نیست!
- فقط خودشون کد رو میفهمن
- نمیتونی کدشونو تغییر بدی چون ممکنه یه چیز رندوم تو یه جایی از برنامه خراب بشه
- داکیومنت کارشون تو ذهنشونه
- خودشونو برای تست های درست اذیت نمیکنن

اگه یه برنامه نویس خوب بره براتون مشکلی پیش نمیاد، اگه یه برنامه نویس بد بخواد بره، قطعا تو دردسر بزرگی میوفتین

@normal_developer
👍9
😁7🤬2👎1💩1🤨1
یکی از ذن های پایتون اینه که زیبا بهتر از زشته.
به این دوتا مثلا توجه کنید:
x=[1,2,3];y=[4,5,6];print([i+j for i,j in zip(x,y)])


x = [1, 2, 3]
y = [4, 5, 6]
result = [i + j for i, j in zip(x, y)]
print(result)


به این معنی که وقتی میشه یه چیزی رو تمیز و مرتب نوشت، بهتره از خفن سازی و ترسناک کردنش پرهیز کنید!

@normal_developer
👍62
یکی دیگه از ذن های پایتون اینه که واضح بهتر از ضمنی هست.
کد باید به صورت واضح قصدش مشخص بشه

مثلا:
def add(x, y): return x + y


def add(x, y):
"""Add two numbers and return the result."""
return x + y



@normal_developer
👍4
ذن سوم پایتون میگه که ساده بهتر از پیچیده ست!
به این معنی که از پیچیدگی های الکی اجتناب کنید.

مثال
def factorial(n):
return n * factorial(n - 1) if n > 1 else 1



def factorial(n):
result = 1
for i in range(2, n + 1):
result *= i
return result



@normal_developer
👏6👍1
این دوتا سرویس که قبلا برای برنامه نویسان ایرانی تحریم شده بود بدون نیاز به تغییر ایپی در دسترسه و نیازی به ابزارهای تحریم شکن نیست.
جزئیات بیشتری از این مورد دردسترس نیست و در تمام کشور رفع تحریم شده.
سرویس های اموزشی مثل کورسرا و یودمی هم رفع تحریم شدن و نیازی به ابزارهای مشابه رو ندارن


@normal_developer
🐳7
ذن چهارم پایتون میگه که پیچیده بهتر از به طرز افتضاحی پیچیده ست!
اگه پیچیدگی قابل اجتناب نیست، مطمئن بشید که ساختار داره و قابل مدیریته

def parse(data):
for i in range(len(data)):
for j in range(len(data[i])):
if isinstance(data[i][j], int):
data[i][j] *= 2


def parse(data):
for row in data:
row[:] = [x * 2 if isinstance(x, int) else x for x in row]




@normal_developer
👌4
ذن پنجم پایتون که به تمیز تر شدن کدها کمک میکنه میگه که صاف بهتر از تو در تو هست.
تا جای ممکن از تو در تو کردن اجتناب کنید.
مثال:

def calculate():
if condition1:
if condition2:
if condition3:
return result


def calculate():
if not (condition1 and condition2 and condition3):
return None
return result


@normal_developer
👍3👏1
ذن شیشم پایتون میگه که جدا بهتر از متراکمه.
یعنی بهتره کدا رو تا حد ممکن فشرده نکنین تو یه خط.

مثال:
result = [x * 2 for x in range(10) if x % 2 == 0]


result = []
for x in range(10):
if x % 2 == 0:
result.append(x * 2)


@normal_developer
🔥2👌1
ذن هفتم میگه که خوانایی کد مهمه.
کدها بیشتر از اینکه نوشته بشن، خونده میشن. پس سعی کنید یه جوری بنویسید که قابل خوندن باشه

مثال:

def f(a,b):return a+b


def add(a, b):
"""Add two numbers."""
return a + b
👌3
یکی از مهمترین ذن های پایتون، ذن هشتمه.
ذن هشتم میگه موارد خاص شما هیچوقت اونقدری خاص نیستن که بخواید قوانین رو براشون بشکنید.
همیشه باید از قوانین پیروی کنید.
مثال:

def divide(x, y):
if y == 0:
return "undefined"
return x / y


def divide(x, y):
if y == 0:
raise ValueError("Cannot divide by zero.")
return x / y


@normal_developer
👍4👌1
ادامه ذن های پایتون رو بذاریم؟
Anonymous Poll
82%
اره
18%
نه
👍2
Normal Developer
ادامه ذن های پایتون رو بذاریم؟
ادامه ذن های پایتون با ۲۶ رای موافق و ۵ رای مخالف، بدون رای ممتنع تصویب شد
👍7
Normal Developer
یکی از مهمترین ذن های پایتون، ذن هشتمه. ذن هشتم میگه موارد خاص شما هیچوقت اونقدری خاص نیستن که بخواید قوانین رو براشون بشکنید. همیشه باید از قوانین پیروی کنید. مثال: def divide(x, y): if y == 0: return "undefined" return x / y def divide(x…
ذن نهم پایتون میگه که:
اگرچه عملی بودن، شفافیت رو شکست میده.
بعضی وقتا راه حل های عملی، قوانین سخت گیرانه رو نادیده میگیره.

مثلا:
# Purity

result = []
for x in data:
if isinstance(x, int) and x % 2 == 0:
result.append(x)


# Practical
result = [x for x in data if isinstance(x, int) and x % 2 == 0]


@normal_developer
👌5
مشکل خود سنیور پنداری!

جدیدا خیلیا رو میبینم که قبل از تخصصشون عنوان سنیور رو وصل میکنن. ولی واقعیت امر اینه که سنیور بودن یه لقب نیست. به زمان هم خیلی بستگی نداره که بعد از فعالیت n ساله در یک زمینه شما به این مرحله برسید.
کسی که خودش رو سنیور خطاب میکنه در واقع مهارت های خیلی زیادی رو باید داشته باشه که یکیشون برنامه نویسیه!
مهارت های نرم، مهارت یادگیری چیزهای جدید، طرز فکر و راهکار یابی و ... بخشی از پیشنیاز این صفت میشه.
تو فرایند جذب نیروی جدید برای شرکتمون رزومه های زیادی رو چک کردم و واقعا همه دوست دارن این عنوان رو قبل اسمشون داشته باشن.
عجیب ترین چیزی که دیدم هم مربوط میشه به یه فردی که بعد از یه بوت کمپ با یه شرکت شروع به همکاری چند ماهه کرده بود و عنوان شغلی خودش تو اون شرکت رو نوشته بود "Senior Django Developer"!
یعنی در فاصله کمتر از چند ماه به این درجه از عرفان رسیده بوده!


@normal_developer
👍9🤣42
ذن دهم پایتون
نباید خطاها رو بیصدا رد کرد.
همیشه باید اطلاعاتی از خطایی که برنامه خورده رو نشون بدید.
مثال:

# Bad one
try:
risky_operation()
except:
pass


 
# Good one
try:
risky_operation()
except Exception as e:
print(f"Error: {e}")


@normal_developer
👍4
ذن یازدهم در ادامه دهمی میگه که:
مگه اینکه صراحتا و از عمد نخواسته باشید که نشونی ازش باشه.
اینجوری مثلا
try:
risky_operation()
except FileNotFoundError:
pass # Ignore missing files


@normal_developer
👍4
ذن دوازدهم میگه در هنگام مواجه شدن با یه چیز مبهم، حدس نزنید.
حدس زدن رو کنار بذارید، واضح باشید.
مثلا:

# Ambigous
def process(data):
if data:
return data + " processed"


def process(data):
if isinstance(data, str):
return data + " processed"
raise ValueError("Invalid input: Expected a string.")


@normal_developer
👍8