Короткие названия для скриптов, нормальная ли практика?
| |
alexsilent | Дата: Воскресенье, 30 Января 2022, 11:02 | Сообщение # 1 |
почти ветеран
Сейчас нет на сайте
| Можно ли использовать короткие имена скриптов, например мне надоело обращаться к скрипту "Game", ибо тут целых 4 символа, долго писать, особенно если функция будет длинной. Ну для примера я короткий вариант возьму, ибо с ходу не смогу придумать, но символов бывает очень много в реальной практике, учитывая все переменные при вызове какой-нибудь комплексной функции:
хочу сократить главный скрипт до "Me" и будет поменьше текста :
В идеале я хочу чтобы вообще можно было бы использовать глобальные переменные без обращений к скриптам вообще из любого места, в духе:
Код Mode = "pause"; // Но похоже это не реально
Нормально ли будет, если скрипт будет с коротким именем и выглядеть так?
Код using System.Collections; using System.Collections.Generic; using UnityEngine;
public class Me : MonoBehaviour {
static public string Mode = "start"; // Code...
}
Добавлено (30 Января 2022, 11:18) --------------------------------------------- Вот несколько примеров разных глобальных или важных функций из моего кривого кода :
Код Game.it.CreateFace(GrabObject(WORD[4]),WORD[5]);
Код if (Game.isEmpty(WORD[3])) // быстрее, чем писать String.IsNullOrEmpty(WORD[3]), сделал себе внутреннюю функцию
Код Game.it.OpenMenu("TalkMenu2",GrabName(WORD[1]),GrabName(WORD[2]));
А "it" это что-то вроде static ссылка на единственный активный "Game" скрипт, ибо часто нельзя сделать просто static функцию, ибо внутри функции бывают локальные переменные.
Сообщение отредактировал alexsilent - Воскресенье, 30 Января 2022, 11:23 |
|
| |
zhuravelsv | Дата: Воскресенье, 30 Января 2022, 12:57 | Сообщение # 2 |
почетный гость
Сейчас нет на сайте
| public class Me : MonoBehaviour - лучше так не делать) названия классов/функций/переменных должны чётко обозначать их задачу и область применения, что бы по названию можно было хотя бы предположить зачем это нужно, по названию "Me" никто никогда в жизни не поймёт не перечитывая весь класс что это такое (ну разве что это не имя какого-нибудь уникального персонажа/объекта о котором есть инфа в доках проекта)
глобальные переменные без обращений к скриптам - это зло, и к счастью в C# такого нету, но есть статические классы с помощью которых можно реализовать синглтон с состояниями всего чего нужно (хотя этого тоже лучше избегать)
Код if (Game.isEmpty(WORD[3])) // быстрее, чем писать String.IsNullOrEmpty(WORD[3]), сделал себе внутреннюю функцию Тоже не очень) через два месяца откроешь свой проект, либо кому-то другому покажешь этот код, а окажется что в коде половина функций дублируют код фреймворка но с другими названиями, ну такое, не очень вообще, сложно потом в такой каше разбираться будет... тем более интелисенс студии всегда подсказывает подсказки, да и дневного лимита по печатаемым символам вроде быть нигде не должно)
Вообще конечно по конвеншнам C# функции и классы должны всегда начинаться с большой буквы (isEmpty) (паскаль кейс), паблик переменные тоже, только абревиатуры (WORD[3]) до 3х символов в апперкейсе, а это уже разработчики юнити у себя всё в кашу намешали...
|
|
| |
alexsilent | Дата: Воскресенье, 30 Января 2022, 16:00 | Сообщение # 3 |
почти ветеран
Сейчас нет на сайте
| Цитата zhuravelsv ( ) это зло А почему зло?Добавлено (30 Января 2022, 16:03) ---------------------------------------------
Цитата zhuravelsv ( ) да и дневного лимита по печатаемым символам вроде быть нигде не должно) Я путаюсь, когда в коде много символов, у меня просто глаза разбегаются от этого, поэтому я ищу баланс меджу пониманием и подбором более короткого синонима для переменной или функции.
Сообщение отредактировал alexsilent - Воскресенье, 30 Января 2022, 16:02 |
|
| |
drcrack | Дата: Понедельник, 31 Января 2022, 00:04 | Сообщение # 4 |
старожил
Сейчас нет на сайте
| Цитата Mode = "pause"; // Но похоже это не реально using static Game; в начало файла
Сообщение отредактировал drcrack - Понедельник, 31 Января 2022, 00:06 |
|
| |
alexsilent | Дата: Понедельник, 31 Января 2022, 12:26 | Сообщение # 5 |
почти ветеран
Сейчас нет на сайте
| Цитата drcrack ( ) using static Game; в начало файла
О, звучит интересно. Спасибо! Надо потестить как это будет работать, если допустим, у текущего скрипта есть переменная Score и у скрипта Game тоже есть Score. В общем, это очень бы сократило код.Добавлено (01 Февраля 2022, 07:23) ---------------------------------------------
Цитата drcrack ( ) using static Game; в начало файла Не работает в юнити 2018.2.21, пишет что C# версия не поддерживает такую фичу, но да ладно, может позже попробую скачать более новую версию юнити, хоть там больше тормозит на моём ноуте.
Сообщение отредактировал alexsilent - Понедельник, 31 Января 2022, 12:28 |
|
| |
drcrack | Дата: Вторник, 01 Февраля 2022, 16:15 | Сообщение # 6 |
старожил
Сейчас нет на сайте
| Цитата Не работает в юнити 2018.2.21, пишет что C# версия не поддерживает такую фичу, но да ладно, может позже попробую скачать более новую версию юнити, хоть там больше тормозит на моём ноуте. есть другой вариант — добавь свойство Mode в общего родителя для своих скриптов т.е.
Код public class MonoBehaviourEx: MonoBehaviour { public string Mode { get { return Game.Mode; } set { Game.Mode = value; } } // другие свойства... }
и используй MonoBehaviourEx везде где у тебя щаз MonoBehaviour
PS это все криво и неправильно но тебя походу это не парит ваще так что наслаждайся коротким кодом
Сообщение отредактировал drcrack - Вторник, 01 Февраля 2022, 16:17 |
|
| |
alexsilent | Дата: Вторник, 01 Февраля 2022, 18:28 | Сообщение # 7 |
почти ветеран
Сейчас нет на сайте
| Цитата drcrack ( ) PS это все криво и неправильно но тебя походу это не парит ваще так что наслаждайся коротким кодом
Лол! Спасибо
|
|
| |
|