Ahmed Ash 👨‍💻
Ahmed Ash 👨‍💻

@ahmedash95

10 تغريدة 9 قراءة Jun 01, 2021
واحدة من اهم المهارات اللي بحاول اتقنها من فتره طويلة هي اني اعرف الـ complexity في الكود اللي قدامي. خصوصاً لما بتعامل مع بيانات كتيرة. (ثريد)
المشكلة اللي بحاول اوضحها هي اني بتعامل في مشاريع احياناً الفريق اللي شغال فيها مش بيهتم بجودة الكود اللي بيكتبه بما انها بتشتغل من غير مشاكل. بس عدم الاهتمام ده بيخلي المشروع بطيئ مع اول استخدام حقيقي.
بردو من المهم انك كـSWE تبقي فاهم الكود بتاعك بيتعامل ازاي مع البيانات علشان علي الاقل تقدر تعرف حدوده و لغايه امتي هيشتغل بشكل كويس و فعال و امتي هيبقي غير مناسب بدل ما تتفاجئ بالمشاكل دي علي البروداكشن.
مثلاً الكود ده من Laravel و قابلت مشاريع كتير بتستخدم اول سطر. و للتوضيح السطر الاول بيجيب كل المستخدمين و بعدين يطلع منهم الـunconfirmed users.
في حين ان السطر التاني بيجيب البيانات من ال database علي طول.
تخيل الكود ده علي ١٠٠ الف مستخدم مثلا منهم ٥ الاف unconfirmed.
السطر الاول في تنفيذه بيستهلك resources كتير و هياخد وقت كبير .. في حين ان السطر التاني هياخد وقت اقل بكتير. ده بغض النظر عن اننا ممكن نحسنه بشكل افضل و اننا نعمل pagination مثلا بس ده مش موضوعنا دلوقتي
لو افترضنا اننا عاوزين نبعت ايميلات بس لو لقينا ان فيه ايميل منهم مثلا yahoo مش هنبعتهم
في الجافا stream api
- باستخدام Filter ف هو هيعدي علي ال list من اولها لاخرها. ف لو عندنا مليون هو هيعدي عليهم كلهم O(n)
- في حين ان anyMatch هتقف مجرد ما تلاقي اول ايميل yahoo. O(1)
ف الحاجات دي بسيطه جداً بس بتفرق خصوصا انك لو ظبطها هتقلل حجم المشاكل اللي ممكن تظهرلك مع الوقت والداتا الكتير اللي المشروع بتاعك هيتعامل عليها.
هنا في اخر مثال احنا عندنا function بتقولي هل الlinks اللي معايا دي فيها bad urls ولا لا. و ده كود تمام مفيش فيه اي مشكله بس لو لاحظنا السطر 6. مشكلته انه لو عندي 100 url و 100 bad link ف هو هيعمل 10k iteration.
لان List.contains method الكومبلكستي بتاعتها O(n).
في حين ان ابسط حل ممكن نعمله و يكون سريع هو اننا نستخدم Set بفرض اننا عاوزين ال links تكون unique عادي.
هنا السطر ٥ حولنا ال List لـ Set و السطر رقم 8 بقي بيستخدم الـSet اللي الكومبلكستي بتاعتها O(1).
ملخص الثريد هو انك تهتم بجودة الكود بتاعك في ابسط الحاجات هيساعدك تتجنب مشاكل بسيطه علي المدي الطويل لو هي موجوده تاثيرها هيكون كبير و ممكن اهمالك ليها يعطل الشغل بشكل كبير.
وبس كدا

جاري تحميل الاقتراحات...