1. 次のコードは、内部データ構造に強く依存した取り方をしています。結合度の観点から、最も問題となる点はどれでしょうか?
function getFirstItemPrice(cart) {
return cart.items[0].price;
}
function getFirstItemPrice(cart) {
return cart.items[0].price;
}
このページでは、AIが作りがちな密結合な設計を題材に、凝集度/結合度の観点で読み解くコードレビュー形式の4択クイズに挑戦します。AIに任せるほど、境界と責務を人間が設計できるかが差になります。
4択クイズ(10問・全問解説付き)で腕試し → 解説で責務の切り方・依存の減らし方を復習。「読む→解く→わかる」で、AIが迷わない疎結合設計へ導く視点を鍛えましょう!
function getFirstItemPrice(cart) {
return cart.items[0].price;
}
function connectDb() {
const client = new DbClient({
host: 'db.example.internal',
port: 5432,
user: 'app_user',
password: 'secret'
});
return client;
}
function showMyPage() {
if (!window.currentUser) {
throw new Error('ログインしていません');
}
// 画面描画
}
function showSettings() {
if (!window.currentUser) {
throw new Error('ログインしていません');
}
// 設定画面描画
}
class ReportGenerator {
generate() {
const config = JSON.parse(localStorage.getItem('report-config') || '{}');
// config をもとにレポートを生成
}
}
class MailService {
constructor(client) {
this.client = client;
}
sendWelcomeMail(user) {
const body = `ようこそ ${user.name} さん`;
this.client.send(user.email, body);
}
sendByeMail(user) {
const body = `ご利用ありがとうございました ${user.name} さん`;
this.client.send(user.email, body);
}
}
function completeTask(task, user, project) {
task.completed = true;
task.completedAt = new Date();
user.completedTaskCount++;
project.lastActivityAt = new Date();
}
function onClickSaveButton() {
const user = collectFormData();
// ドメインロジックを直接 new
const service = new UserService();
service.save(user);
alert('保存しました');
}
function calculateDiscount(user, now = new Date()) {
if (user.isPremium && now.getDay() === 5) {
return 0.2;
}
return 0;
}
function formatUserAddress(user) {
return `${user.postalCode} ${user.pref} ${user.city} ${user.street}`;
}
function formatShippingLabel(order) {
const user = order.user;
return `${user.postalCode} ${user.pref} ${user.city} ${user.street}`;
}
function notifyUser(user, message) {
Slack.post('#alerts', message);
Email.send(user.email, message);
Sms.send(user.phone, message);
}
※本ページは学習支援を目的とした要約です。実務適用時は原典もご参照ください。
経験:Webアプリ・業務システム
得意:PHP・JavaScript・MySQL・CSS
制作・運用中:フォーム生成基盤・クイズ学習プラットフォーム・htmx逆引きレシピ 等
AI時代のエンジニアタイプ診断:CSPF/とろとろみかん
詳しいプロフィールはこちら! もちもちみかんのプロフィール