آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

کد نویسی استاندارد

Morteza  12 سال پیش  12 سال پیش
0 0

با سلام
من تا قسمت استفاده از UI اندروید در جاوا را دیدم و سعی کردم که یک نرم افزار ساده بسازم که بتونه :
دنباله فیبوناچی
فاکتوریل
توان خود عدد
بررسی اول بودن
و با زدن یک دکمه، دکمه های چهارعمل اصلی ظاهر میشه و دکمه هایی که اعمال بالا را انجام می دهند پنهان می شوند
من با توجه به دانش کم برنامه نویسی ام سعی کردم خیلی منظم و کوتاه بنویسم
حالا می خوام یکی از دوستان برنامه را به خصوص نحوه استفاده از متغییر ها را چک کند و ببیند استاندارد هست یا نه.

کل پروژه را آپلود کردم :

http://www.98up.in/uploads/up789531391872695_mathtools.zip

 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
مجتبی یگانه  12 سال پیش
0 0

بهتر بود فقط سورس رو درج میکردید ، دانلود ایمپورت زمانبره !

 package sakifard.morteza.app.mathtools;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;


public class MathtoolsActivity extends Activity {

    public long  result   = 0;
    public float convert1 = 0f;
    public float convert2 = 0f;


    public long fibonacci(int n) {
        int a = 1;
        int b = 1;
        int c = 0;
        for (int i = 1; i <= n - 2; i++) {
            c = a + b;
            a = b;
            b = c;
        }
        return b;
    }


    public boolean checkaval(int n) {
        for (int i = 2; i <= n / 2; i++) {
            if (n % i == 0)
                return false;
        }
        return true;
    }


    public long factorial(int n) {
        long result = 1;
        for (int i = n; i >= 2; i--)
            result *= i;
        return result;
    }


    public long tavan(int n) {
        long result = n * n;
        for (int i = 1; i < n - 1; i++)
            result *= n;
        return result;
    }


    public int convertstrtoint() {
        final EditText edtInput = (EditText) findViewById(R.id.edtInput);
        String userInput = edtInput.getText().toString();
        final int value = Integer.parseInt(userInput);
        return value;
    }


    public void convertstrtofloat() {
        final EditText edtInput = (EditText) findViewById(R.id.edtInput);
        String userInput = edtInput.getText().toString();
        convert1 = Float.parseFloat(userInput);

        final EditText edtInput2 = (EditText) findViewById(R.id.edtInput2);
        String userInput2 = edtInput2.getText().toString();
        convert2 = Float.parseFloat(userInput2);
    }


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        final TextView txtshow = (TextView) findViewById(R.id.txtshow);
        final Button btntavan = (Button) findViewById(R.id.btntavan);
        final Button btnaval = (Button) findViewById(R.id.btnaval);
        final Button btnfibonacci = (Button) findViewById(R.id.btnfibonacci);
        final Button btnfactorial = (Button) findViewById(R.id.btnfactorial);
        final Button btncalculator = (Button) findViewById(R.id.btncalculator);
        final Button btnmod = (Button) findViewById(R.id.btnmod);
        final Button btndiv = (Button) findViewById(R.id.btndiv);
        final Button btnmul = (Button) findViewById(R.id.btnmul);
        final Button btnsub = (Button) findViewById(R.id.btnsub);
        final Button btnsum = (Button) findViewById(R.id.btnsum);
        final Button btnback = (Button) findViewById(R.id.btnback);
        final EditText edtInput2 = (EditText) findViewById(R.id.edtInput2);
        final EditText edtInput = (EditText) findViewById(R.id.edtInput);

        txtshow.setText("خوش آمدید");
        btnback.setVisibility(View.GONE);
        btndiv.setVisibility(View.GONE);
        btnmod.setVisibility(View.GONE);
        btnmul.setVisibility(View.GONE);
        btnsum.setVisibility(View.GONE);
        btnsub.setVisibility(View.GONE);
        edtInput2.setVisibility(View.GONE);

        btnfibonacci.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

                result = fibonacci(convertstrtoint());
                txtshow.setText("نتیجه : " + result);
            }
        });

        btnaval.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                if (checkaval(convertstrtoint()))
                    txtshow.setText("عدد  " + convertstrtoint() + " اول است");
                else
                    txtshow.setText("عدد  " + convertstrtoint() + " اول نیست");
            }
        });

        btnfactorial.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                result = factorial(convertstrtoint());
                txtshow.setText("نتیجه : " + result);
            }
        });

        btntavan.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                result = tavan(convertstrtoint());
                txtshow.setText("نتیجه : " + result);
            }
        });

        btncalculator.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                btncalculator.setVisibility(View.GONE);
                btntavan.setVisibility(View.GONE);
                btnaval.setVisibility(View.GONE);
                btnfibonacci.setVisibility(View.GONE);
                btnfactorial.setVisibility(View.GONE);

                btndiv.setVisibility(View.VISIBLE);
                btnmod.setVisibility(View.VISIBLE);
                btnmul.setVisibility(View.VISIBLE);
                btnsum.setVisibility(View.VISIBLE);
                btnsub.setVisibility(View.VISIBLE);
                btnback.setVisibility(View.VISIBLE);
                edtInput2.setVisibility(View.VISIBLE);

            }
        });

        btnsum.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                convertstrtofloat();
                txtshow.setText("" + (convert1 + convert2));
            }
        });

        btnsub.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                convertstrtofloat();
                txtshow.setText("" + (convert1 - convert2));
            }
        });

        btnmul.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                convertstrtofloat();
                txtshow.setText("" + (convert1 * convert2));
            }
        });

        btndiv.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                convertstrtofloat();
                txtshow.setText("" + (convert1 / convert2));
            }
        });

        btnmod.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                convertstrtofloat();
                txtshow.setText("" + (convert1 % convert2));
            }
        });

        btnback.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                btncalculator.setVisibility(View.VISIBLE);
                btntavan.setVisibility(View.VISIBLE);
                btnaval.setVisibility(View.VISIBLE);
                btnfibonacci.setVisibility(View.VISIBLE);
                btnfactorial.setVisibility(View.VISIBLE);

                btndiv.setVisibility(View.GONE);
                btnmod.setVisibility(View.GONE);
                btnmul.setVisibility(View.GONE);
                btnsum.setVisibility(View.GONE);
                btnsub.setVisibility(View.GONE);
                btnback.setVisibility(View.GONE);
                edtInput2.setVisibility(View.GONE);
            }
        });

    }
}

من اینو گذاشتم که بقیه ام نظر بدن ، اما من نظر خودم رو بصورت انتقال تجربه میگم !

اینها چیزاییه که به مرور تصحیح میشه و در واقع دست خط برنامه نویس هست ، اما اگر میخواید برناهه با عملکرد مناسب و تداخل کم ، و به قول شما استاندارد نوشته باشه ، سعی کنید سطح دسترسی متغییر به کمترین مقداری که نیاز شما رو براورده کنه تغییر بدید !

مثلا وقتی public long result = 0 رو تعریف کردید ، یعنی چی ؟

یعنی که این متغییر دسترسی عمومی از تمام کلاس ها داره ، اما این درحالی که شما از این دسترس استفاده نمیکنید و میشد private باشه و همین طور تا آخر ، من سورس رو کامل نخوندم ، اما مثلا توی کد زیر 

 for (int i=0;i<10;i++)
{
//do job !
}

چرا موقع تعریف حلقه میگیم int i   خوب چون جای دیگه بعد حلقه بهش نیاز نداریم ، پس یک دسترسی محدود فقط داخل اون بلاک کد بهش میدیم ، که تداخلی با بقیه i ها نداره !

شما سعی کن رعایتش کنی ، و حتی روش وقت بزار ، اما خودت رو خیلی درگیر نکن ، هر چی زبان های بیشتر یاد بگیری با ابعاد دیگری از متغییر ها اشنا میشی ! 

اینم بگم که مثلا میخوای یه آرایه ی یک میلیون عنصری بسازی ، خوب اینجا یه بایت هم یه بایته ! ، پس اگه محلی باشه ، بعد استفاده ازش حافظه آزاد میشه و برنامه بهینست :) 

توی اینجور مباحث ما 2 تا متغییر رو در نظر نمیگیریم ، طبق علمی به نام داده ساختار ، باید حد بینهایت داده رو در نظر گرفت ، مثلا میگی 1 بایت رو ولش کن چیزی نیست ، اما بینهایت بایت ، خودش چقدر RAM نیاز داره ؟  (مباحث محاسباتی و سنگینی داره ! )

امیدوارم مفید واقع بشه

0 0
مرسی از جوابت، خیلی خوب و کامل بود. یک نکته رو هم من اضافه می کنم. در کل به قوانین نوشتاری می گیم Convention و مثلا داریم Java Convention که توسط شرکت های زیادی این قوانین تبیین شدن. اما از اونجاییکه به عقیده من بعضی از نکات این قوانین فوق العاده ناشیانه تبیین شده ( حتی توسط Sun Java ) من از Convention خودم استفاده می کنم که بسیار نزدیک به Sun Java Convention هست با تفاوت های کوچیک اما دلیل دار. به زودی این Convention ها رو در ویدئویی به شما معرفی خواهم کرد. باقی هم که قوائد شیء گرایی هست مثل public private بودن که دوستمون خوب توضیح داد. (12 سال پیش)

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