branch: firstday
класс Animal.
class Animal
{
public string name, color, meal, howl, vois, sleep, type, skill;
public int age;
public string AnimalsInfo, AnimalParticularSpecies;
public bool sweem, run, fly;
public void skillsplay ()
{
if (sweem)
skill = skill + "Умеет плавать";
else skill = skill + "";
if (run)
skill = skill + "Умеет бегать";
else skill = skill + "";
if (fly)
skill = skill + "умеет летать";
else skill = skill + "";
}
Начнем с простого, почему у тебя сам класс с видимостью internal(которая по дефолту задается при отсутствии явных модификаторов, таких как public или private , но методы skillsplay() и show - public? Делая класс internal - ты не сможешь использовать его в другой сборке (assembly), тебе пока, я думаю можно делать все классы public. И разберись с тем, зачем всё же нужны поля и свойства. И что такое модификаторы доступа get и set .
Тебе не кажется, что этот класс должен быть абстрактным? Ну, даже самое понятие животное довольно абстрактное. А потом подумать, каким минимальным набором свойств и методов обладает каждое животное и описать их в этом классе,а остальные свойства, которые присущи уже млекопитающим или птицам или еще кому - реализовать в подклассах (Derived) класса Animal? Тут трудность как минимум в том, если добавится еще один скилл, то придется еще один if дописывать и текст к нему.
Обычно у всех разработчиков, для удобочитаемости кода используется определенный стиль именования переменных, параметров и расположения их в коде.
- Например приватные переменные, которые используются только внутри класса и недоступны наружу (другим классам) обычно именуются либо с маленькой буквы, либо через подчеркивание в самом начале, например
private object _someVariableName;.
- Именование публичных свойств, методов и полей, а так же констант принятно с большой буквы, а если имя содержит более 1 слова, то применяется стиль CamelCase, когда каждое новое слово пишется слитно, но с большой буквы, например
public void RenderOnMap(Animal animal);
public const string FileSize = 50 * 1024 * 1024;
public TimeSpan CalculateSleepingTime {get; set;}
Подумай об осмысленном наименовании и задании типа для полей, свойств и методов.
Ну т.е. я, смотря на код класса - не могу понять по названию, что этод метод должен делать
- Он ничего не принимает как аргументы
- Он ничего не возвращает как результат
А должен понимать по одному названию, ну т.е. если бы у класса был (абстрактный) метод
например
public int NumberOfTeeth() / public int NumberOfTeeth {get;set;}
или
public AttackResult Attack(Animal victim)
Из этих названий вроде понятно, что делает метод или свойство.
Пока хватит :)
branch: firstday
класс Animal.
Начнем с простого, почему у тебя сам класс с видимостью internal(которая по дефолту задается при отсутствии явных модификаторов, таких как
publicилиprivate, но методы skillsplay() и show -public? Делая класс internal - ты не сможешь использовать его в другой сборке (assembly), тебе пока, я думаю можно делать все классыpublic. И разберись с тем, зачем всё же нужны поля и свойства. И что такое модификаторы доступаgetиset.Тебе не кажется, что этот класс должен быть абстрактным? Ну, даже самое понятие животное довольно абстрактное. А потом подумать, каким минимальным набором свойств и методов обладает каждое животное и описать их в этом классе,а остальные свойства, которые присущи уже млекопитающим или птицам или еще кому - реализовать в подклассах (Derived) класса
Animal? Тут трудность как минимум в том, если добавится еще один скилл, то придется еще одинifдописывать и текст к нему.Обычно у всех разработчиков, для удобочитаемости кода используется определенный стиль именования переменных, параметров и расположения их в коде.
private object _someVariableName;.Подумай об осмысленном наименовании и задании типа для полей, свойств и методов.
Ну т.е. я, смотря на код класса - не могу понять по названию, что этод метод должен делать
А должен понимать по одному названию, ну т.е. если бы у класса был (абстрактный) метод
например
public int NumberOfTeeth()/public int NumberOfTeeth {get;set;}или
public AttackResult Attack(Animal victim)Из этих названий вроде понятно, что делает метод или свойство.
Пока хватит :)