Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Модуляция #4

Merged
merged 2 commits into from
Jan 19, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,7 @@ <h2 class="data-error__title">Не удалось загрузить данны
</section>
</template>
<script src="./js/functions.js"></script>
<script src="./js/main.js"></script>
<script src="./js/main.js" type="module"></script>
</body>

</html>
48 changes: 48 additions & 0 deletions js/getComments.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import {getRandomNumber} from './getRandomNumber';

const messages = [
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Название констант таких называй в верхнем регистре разделяя их нижним подчеркиванием
MESSAGES NAMES PHOTOS_DESCRIPTIONS

'Всё отлично!',
'В целом всё неплохо. Но не всё.',
'Когда вы делаете фотографию, хорошо бы убирать палец из кадра. В конце концов это просто непрофессионально.',
'Моя бабушка случайно чихнула с фотоаппаратом в руках и у неё получилась фотография лучше.',
'Я поскользнулся на банановой кожуре и уронил фотоаппарат на кота и у меня получилась фотография лучше.',
'Лица у людей на фотке перекошены, как будто их избивают. Как можно было поймать такой неудачный момент?!'
];

const names = [
'Андрей',
'Елизар',
'Нафаня',
'Марта',
'Анисья',
'Марк'
];

function getOneComment(i) {
const oneComment = {};

oneComment.id = getRandomNumber(i * 10 + 1, (i + 1) * 10);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Магические числа, такие как 10, 6, 2 нужно выносить в константы и давать им имя, чтобы было понятно почему именно они, разработчик который в будущем будет смотреть код не будет знать о техническом задании для этой задачи и ему нужно показать так контекст

oneComment.avatar = `img/avatar-${getRandomNumber(1,6)}.svg`;
oneComment.message = '';
const messagesCount = getRandomNumber(1,2);
for(let j = 1; j <= messagesCount; j++) {
const messageIndex = getRandomNumber(0, messages.length - 1);
oneComment.message += messages[messageIndex];
}
const nameIndex = getRandomNumber(0, names.length - 1);
oneComment.name = names[nameIndex];

return oneComment;
}

export function getComments () {
const comments = [];

const maxComments = getRandomNumber(0,30);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

30 тоже магическое число

for(let i = 0; i <= maxComments; i++){
const comment = getOneComment(i);
comments.push(comment);
}

return comments;
}
53 changes: 53 additions & 0 deletions js/getPhotos.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import {getRandomNumber} from './getRandomNumber';
import {getComments} from './getComments';

const photosDescriptions = [
'Бухта в Черногории',
'Дорога к пляжу',
'Лазурное море',
'Отлив и прилив',
'Обед в Нияме',
'Тачка мечты',
'Завтрак',
'Ягодный чай',
'Тот самый пляж',
'Обувница ',
'Пляжные тропки',
'Где-то под Саратовом',
'Ресторан высокой кухни',
'Котосуши',
'Новые тапуси',
'Где-то над землей',
'Вчерашний концерт',
'Музей ретро-авто',
'Ночные тапки',
'Отель в Египте',
'Тайский вайб',
'Закат',
'Краб',
'Yo',
'Сафари'
];

function getOnePhoto(i) {
const onePhoto = {};

onePhoto.id = i + 1;
onePhoto.url = `photos/${onePhoto.id}.jpg`;
onePhoto.description = photosDescriptions[i];
onePhoto.likes = getRandomNumber(15,200);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

15 и 200 в константы

onePhoto.comments = getComments();

return onePhoto;
}

export function getPhotos() {
const photos = [];

for(let i = 0; i < 25; i++){
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

25 вынеси в константу

const photo = getOnePhoto(i);
photos.push(photo);
}

return photos;
}
4 changes: 4 additions & 0 deletions js/getRandomNumber.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@

export function getRandomNumber (min,max) {
return Math.round(Math.random() * (max - min) + min);
}
102 changes: 1 addition & 101 deletions js/main.js
Original file line number Diff line number Diff line change
@@ -1,103 +1,3 @@
const photosDescriptions = [
'Бухта в Черногории',
'Дорога к пляжу',
'Лазурное море',
'Отлив и прилив',
'Обед в Нияме',
'Тачка мечты',
'Завтрак',
'Ягодный чай',
'Тот самый пляж',
'Обувница ',
'Пляжные тропки',
'Где-то под Саратовом',
'Ресторан высокой кухни',
'Котосуши',
'Новые тапуси',
'Где-то над землей',
'Вчерашний концерт',
'Музей ретро-авто',
'Ночные тапки',
'Отель в Египте',
'Тайский вайб',
'Закат',
'Краб',
'Yo',
'Сафари'
];

const messages = [
'Всё отлично!',
'В целом всё неплохо. Но не всё.',
'Когда вы делаете фотографию, хорошо бы убирать палец из кадра. В конце концов это просто непрофессионально.',
'Моя бабушка случайно чихнула с фотоаппаратом в руках и у неё получилась фотография лучше.',
'Я поскользнулся на банановой кожуре и уронил фотоаппарат на кота и у меня получилась фотография лучше.',
'Лица у людей на фотке перекошены, как будто их избивают. Как можно было поймать такой неудачный момент?!'
];

const names = [
'Андрей',
'Елизар',
'Нафаня',
'Марта',
'Анисья',
'Марк'
];

function getRandomNumber (min,max) {
return Math.round(Math.random() * (max - min) + min);
}

function getOneComment(i) {
const oneComment = {};

oneComment.id = getRandomNumber(i * 10 + 1, (i + 1) * 10);
oneComment.avatar = `img/avatar-${getRandomNumber(1,6)}.svg`;
oneComment.message = '';
const messagesCount = getRandomNumber(1,2);
for(let j = 1; j <= messagesCount; j++) {
const messageIndex = getRandomNumber(0, messages.length - 1);
oneComment.message += messages[messageIndex];
}
const nameIndex = getRandomNumber(0, names.length - 1);
oneComment.name = names[nameIndex];

return oneComment;
}

function getComments () {
const comments = [];

const maxComments = getRandomNumber(0,30);
for(let i = 0; i <= maxComments; i++){
const comment = getOneComment(i);
comments.push(comment);
}

return comments;
}

function getOnePhoto(i) {
const onePhoto = {};

onePhoto.id = i + 1;
onePhoto.url = `photos/${onePhoto.id}.jpg`;
onePhoto.description = photosDescriptions[i];
onePhoto.likes = getRandomNumber(15,200);
onePhoto.comments = getComments();

return onePhoto;
}

function getPhotos() {
const photos = [];

for(let i = 0; i < 25; i++){
const photo = getOnePhoto(i);
photos.push(photo);
}

return photos;
}
import { getPhotos } from './getPhotos';

getPhotos();
Loading