Skip to content

Instantly share code, notes, and snippets.

//
// at domain layer
//
class FizzBuzzNumber(private val number: Int) {
fun expression(): String {
val isMul3 = number % 3 == 0
val isMul5 = number % 5 == 0
return when {
@yanzm
yanzm / fizzbuzz.kt
Last active February 15, 2019 10:55
//
// https://twitter.com/yanzm/status/1096312798412328970
//
//「3の倍数のときは fizz が返る」
//「5の倍数のときは buzz が返る」
//「3の倍数かつ5の倍数のときは fizzbuzz が返る」
//「3の倍数でも5の倍数でもないときはそのままの数字が返る」
//
// ① Entity または ValueObject(Clean Architecture だと Entities に入る)がもつロジックだと思う
// ② DomainService (これも Clean Architecture だと Entities に入る)だと思う
@yanzm
yanzm / sample.kt
Created February 12, 2019 02:25
DroidKaigi 2019 の 「ぼくのかんがえた最強の Usecase の作り方」 https://www.youtube.com/watch?v=bw8bckLSKiM というセッションで出てきたビジネスロジックの実装を考えてみました。
//
// DroidKaigi 2019 の 「ぼくのかんがえた最強の Usecase の作り方」 https://www.youtube.com/watch?v=bw8bckLSKiM
// というセッションで出てきたビジネスロジックの実装を考えてみました。
//
// - 設定が有効なら救急の番号には Prefix をつけない
// - 設定が有効ならフリーダイアルの番号には Prefix をつけない
// - 無視リストの宛先には Prefix をつけない
//
data class PhoneNumber(private val number: String) {
init {
@yanzm
yanzm / MainActivity.kt
Created October 26, 2018 03:20
setCompoundDrawablesWithIntrinsicBounds と setCompoundDrawablesRelativeWithIntrinsicBounds で view.measure() の結果が違う
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val metrics = resources.displayMetrics
val widthMeasureSpec =
View.MeasureSpec.makeMeasureSpec(metrics.widthPixels, View.MeasureSpec.AT_MOST)
@yanzm
yanzm / MainActivity.java
Created January 26, 2017 03:03
Customize GridLayoutManager sample
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final RecyclerView recyclerView = new RecyclerView(this);
setContentView(recyclerView);
recyclerView.setHasFixedSize(true);
private static final String PREF_SIZE_KEY = "pref_size_key";
public static void saveSize(@NonNull Context context, @Nullable Size size) {
final SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
final SharedPreferences.Editor editor = pref.edit();
if (size == null) {
editor.remove(PREF_SIZE_KEY);
} else {
editor.putInt(PREF_SIZE_KEY, size.getValue());
}
/**
* サイズId値を保持するクラス
* <p/>
* 値がセットされていない状態を持つ
*/
public class SizeId {
public static final int VALID_SIZE1 = 1;
public static final int VALID_SIZE2 = 2;
/**
* サイズId値を保持するクラス
* <p/>
* 値がセットされていない状態を持つ
*/
public class ValidatableSize {
public static final int VALID_SIZE1 = 1;
public static final int VALID_SIZE2 = 2;
package net.yanzm.profileapplication;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.app.Activity;
import android.app.FragmentManager;
import android.content.Intent;
import android.net.Uri;
package net.yanzm.profileapplication;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;