یاداشت های کوتاه یک برنامه نویس

طبقه بندی موضوعی

۵ مطلب با موضوع «java :: technic» ثبت شده است

۰۱
خرداد

برای سیستم پلاگین نیاز پیدا کردم تا محتویات یک پوشه رو مرور کنم یعنی فایل هاشو لیست کنم بعد باید تشخیص میدادم کدام یک فایل جار هستند. راحت ترین گزینه اینه که نام های دریافتی از آرایه listFiles دایرکتوری والد رو به دو قسمت نام و پسوند تقسیم کنم.

خب مشکل اینه که متد تقسیم رشته درست کار نمیکنه مثلا کد زیر :

        File pluginSDir = new File(pathToPluginDir);
        File[] list = pluginsDir.listFiles();

        for (int i = 0; i < list.length; i++) {

            if (list[i].isFile() && !list[i].isHidden()) {
                String name = list[i].getName();
                String extension = name.split(".")[1];

                System.out.println(" file in plug dir => [" + list[i].getName() + "] ( " + extension + " )");
            }

        }

چرا ؟!

چون تازه گی ها یه قانونی کشف کردم که میگه چیز های بسیار پیش پا افتاده بعضی وقتا میتونند بسیار مهلک باشند. 

در نهایت فهمیدم خطای نال پوینتر اکسپشن از آرایه برگشتی از متد اسپلیته. به صورت کلی وقتی یک رشته رو به این متد میدیم و یک الگو که به صورت عبارات با قاعده برسی میشه پس اگر نقطه رو وارد کنیم این در عبارات با قاعده یعنی هر کاراکتری پس نتیجه ی درستی برنخواهد گشت. و با دو عدد بک اسلش مشخص میکنیم که منظور ما کاراکتر نقطه بوده نه چیز دیگه ای و مشکل حل میشود. 

به عنوان یک پیش نهاد برای اینکه از این جور مشکلات پیش نیاد بهتره مستندات کیت توسعه جاوا رو به آی دی عی اضافه کنیم . تا بدونیم پارامتر های ورودی و نوع خروجی یک متد چه چیزی باید باشه.

  • * RayanFar
۲۰
فروردين

شاید نیاز داشته باشید که اطلاعاتی رو در سمت سرور در فایل اکسل بنویسید مثلا فاکتور خرید اینترنتی رو که به صورت پیش فرض قالب بندی شده و مواردی باید به اون اضافه بشه .در این صورت برنامه آفیس که نمیشه در سمت سرور باز کرد. یا شاید بخواهید برنامه آفیس رو برای موبایل بنویسید.

  • * RayanFar
۰۳
مهر

نکته شماره 2 : دسترسی به کلاس ها و متد ها و متغییر ها رو محدود کنید.

بهتره به طور پیش فرض تمام موارد فوق مثل کلاس ها متد ها و متغییر ها رو خصوصی در نظر بگیرید مگر اینکه دلیل قانع کننده ای برای سطح دسترسی بیشتر مثلا محافظت شده پکیج یا عمومی داشته باشید. توصیه میشه حتما دلیل این کار رو در مستندات ذکر کنید.

  • * RayanFar
۰۳
مهر

نکته اول : سعی کنید کلاس هاتون وابسته به مقدار دهی اولیه نباشند.

شاید خیلی از برنامه نویس ها به این کار عادت داشته باشند یا حتی توصیه هم شده باشند اما خب نظر اکثریت همیشه درست نیست.

راه های زیادی برای این کار وجود داره مثلا میتونید:

  • بهتره تمام متغییر ها به صورت خصوصی باشند.(اگر نیازه از بیرون بهشون دسترسی داشته باشند با متدهای set و get این کار انجام بدهید ، این باعث میشه تا متغییر هایی که هنوز مقدار دهی اولیه نشده اند از دستکاری پیش بینی نشده محافظت شوند).
  • برای هر نمونه از کلاس یک متغییر بولین مشخص کننده مقدار دهی اولیه شده یا نشده در نظر بگیرید.
  • وضعیت متغییر بولین یاد شده رو در سازنده و قبل عبارت return تغییر بدهید.
  • برای هر متد غیر سازنده دیگه ای ابتدا چک کنید آیا متغییر بولین مذکور true است یا خیر اگر true بود اجرا شود وگرنه استثنایی بی اندازد، فراموش نکنید این را باید قبل از هر کار دیگه ای در آن متد انجام بدهید.

اگر درک درستی از برنامه نویسی شئ گرا داشته باشید مطمئنا متوجه شده اید که یک خرابکار چطور میتونه از این طریق سوء استفاده کند.

تو پست بعدی در این باره و متد های استاتیک خواهم نوشت.

  • * RayanFar
۱۴
مرداد

بعضی وقت ها نیاز هست برنامه restart بشه مثلا وقتی که آپدیتی را از اینترنت دریافت میکنه و یا وقتی که یک پلاگین جدید نصب میکنید(البته اگر از OSGI استفاده کنید نیازی به restart نیست) به هر حال هیچ راه ساده ای نیست مگر از دستورات خط فرمان استفاده کنید که در جاوا امکانات خوبی برای این کار وجود داره.

  • * RayanFar