Java: bir chaqiruv usulidan ikki dyuymli chiziqni qaytaradi

Men kodni juda ko'p miqdorda 2 o'lchovli koordinatalar bilan ishlaydigan bajaraman:

int[] getSize() {
    int[] res = {gridRows, gridColumns};
    return res;
}

Bilaman, kichkina sinfni belgilash va turinlikni olish mumkinligini bilaman, lekin men o'z kodimga qo'shilishim kerak bo'lgan kichik jiddiy .java faylida bunday ahamiyatga ega bo'lmagan sinfga ega bo'lishimni bezovta qiladi.

Sizningcha, bu yomon, yomon yoki yomonmi? Yoki buni ham qilasizmi?

3

6 javoblar

Agar sizning loyihangizda o'zingiz istagan kontseptsiya mavjud bo'lsa, masalan, bu ikki intsning koordinatalari mavjud bo'lsa, ular uchun sinfga ega bo'lishning hech qanday yomon joyi yo'q. Menimcha, bu juda ham tozalovchi, har bir odamni massivni yaratishga majbur qiladi va hokazo.

Misol uchun, bir kishi shu loyihada rivojlanmoqda va usulingizni chaqiradi, siz ularni ikkita pozitsiya yoki "Koordinatalar" deb ataladigan obyektni olish uchun aniqroq deb hisoblaysizmi?

Bundan tashqari, agar siz Klassdan foydalansangiz, to'g'ri koordinatalarni kiritish mumkin bo'lgan koordinatalarni taqqoslash kabi narsalarni amalga oshirishingiz mumkin. (Iltimos, Ob'ekt shartnomasi ni hurmat qilishni unutmang Agar siz teng keladigan narsalarni qayta aniqlasangiz).

12
qo'shib qo'ydi

Bunday holda nuqta dan foydalanishingiz mumkin.

Umuman olganda, estetikani chetga surib qo'yish, ko'pincha bunday mantiqan boshqa joyga tarqalgani bilan emas, balki ularni ushlab turish uchun sinf yaratish mantiqiydir. Ba'zan hatto toString() ni tuzatishda va tuzatish uchun etarli bo'lgan sabablar etarli.

Juda yuqori ishlashi tashvish tug'diradigan joylarda, yuqori tirajli yordamchi usullarni yakuniy qilib belgilang, shunda ular uyg'un bo'lishi mumkin.

Mumkin bo'lgan a'zolar umumiy funktsiyaga ega bo'lgan narsalar qaerda bo'lsa, ular funktsiyasi bilan qaytib kelishgan bo'lsa, ular ko'proq umumiy bo'lgan kelajakni ko'rishingiz uchun, albatta, sinfni tashkil qiling.

Ayrim hollarda, qaytarib olishni qaytadan ko'rib chiqing va usul katta qiymatga ega kontekst ob'ektida qaytib kelgan qiymatlarni belgilash mumkin. Buni juda ehtiyotkorlik bilan ishlatish kerak - osonlikcha kavramalar paydo bo'lishiga olib kelishi mumkin.

3
qo'shib qo'ydi

uni ichki o'tgan statik sinf sifatida belgilashingiz mumkin

(masalan, 2 nuqtadan koordinatalardagi operatsiyalarni 1 nuqtada belgilash, ularni to'plamga qo'yish (tengdoshlar kabi ishlamaydi) haqida gapirish mumkin emas

2
qo'shib qo'ydi

Uslubning qaytish qiymatlarini ushlab turish uchun ichki sinf yaratishingiz mumkin. Bu yangi .java faylini talab qilmaslikning afzalligi:

public class Parent{
  public Size getSize() {
    return new Size(gridRows, gridColumns);
  }

  public static class Size{
    //...
  }
}

Parent parent = new Parent();
Parent.Size size = parent.getSize();

Sinfni "statik" deb ta'riflash asosan odatiy sinfdagidek muomala qilinishi mumkinligini anglatadi (siz Parent.Size o'rniga Size o'rniga foydalanishingiz kerak). Agar sinf "statik" bo'lmasa, tashqi sinfning namunasiga ega bo'lmasdan, uning yangi misolini yaratolmaysiz.

1
qo'shib qo'ydi

Afsuski, Java-da bu juda ko'p qiymatlarni qaytarishning eng yaxshi yo'li. Men odatda Serial yoki Ro'yxatlardan foydalanaman. Men buni o'zim uchun "yomon shakl", deb hisoblayman, buning uchun sinf yaratish kerak emas, lekin bu kerak emas.

0
qo'shib qo'ydi

Java Java usullaridan bir nechta qiymatni qaytarib bera olmasligini hisobga olsak, nima qilayotganingizni o'sha turdagi bir nechta qadriyatlarni qaytarish uchun yagona tanlovdir. Agar qiymatlar turli xil bo'lsa, qaytariladigan qiymatlarni ixchamlashtirish uchun siz kichik sinf (turli xil qiymat obyekti) yozishingiz kerak bo'ladi.

Yana bir, hatto eng yomon variant, massivlarni parametr sifatida o'tkazib, u erda qaytariladigan qiymatlarni qoldirish - Java-da parolni simulyatsiya qilish uchun kesish. Juda xafa bo'ldim.

0
qo'shib qo'ydi