このルールさえ押さえておけば、読んでいるコードが省略記法を使っていてもほぼ読めるようになります。
def concatAsString(a: Int, b: Int): String = {
val a_ = a.toString();
val b_ = b.toString();
response=$(cat -) | |
payload=$(echo $response | sed -e 's/^.*"Payload":"\([^"]*\)".*$/\1/') | |
# action string "runme" == byte "cnVubWU=" , replace "runme" with your payload data | |
if [ "$payload" == "cnVubWU=" ]; then | |
logger restarting ntpd, consul triggered by payload $payload | |
# /usr/bin/sudo /sbin/service ntpd restart | |
else | |
logger skipping ntpd restart, consul triggered by payload $payload | |
fi |
import javax.xml.bind.DatatypeConverter; | |
import java.lang.reflect.Method; | |
class Main { | |
public static void main(String[] args) { | |
ClassLoader classLoader = new ClassLoader() { | |
private static final String src = "CAFEBABE0000003100270A0009001609001700180800190A001A001B08001C08001D0A001A001E07001907001F0100063C696E69743E010003282956010004436F646501000F4C696E654E756D6265725461626C650100124C6F63616C5661726961626C655461626C650100047468697301000A4C46697A7A42757A7A3B01000866697A7A42757A7A010001690100014901000A536F7572636546696C6501000D46697A7A42757A7A2E6A6176610C000A000B0700200C0021002201000846697A7A42757A7A0700230C0024002501000446697A7A01000442757A7A0C002400260100106A6176612F6C616E672F4F626A6563740100106A6176612F6C616E672F53797374656D0100036F75740100154C6A6176612F696F2F5072696E7453747265616D3B0100136A6176612F696F2F5072696E7453747265616D0100077072696E746C6E010015284C6A6176612F6C616E672F537472696E673B2956010004284929560021000800090000000000020001000A000B0001000C0000002F00010001000000052AB70001B1 |
package sample; | |
public class AppConfig implements Config { | |
@Override | |
public QueryImplementors getQueryImplementors() { | |
return new QueryImplementors() { | |
@Override | |
public SqlFileSelectQuery createSqlFileSelectQuery(Method method) { | |
if (method.isAnnotationPresent(Unload.class)) { |
以下あくまで私見として捉えてください。僕もDDDを勉強中で解釈が間違っていたりとか異なる意見があると思いますので。 あと書きなぐっているので読みづらくてすみません、あとで余裕があれば改めてブログにでもまとめます。
それで、僕の理解だとリポジトリって対象の集約ごとに提供するメソッドが多少ばらつくんですよね。 例えば書き込みをサポートしないリポジトリとか、IDを複数渡して一度に取ってこれるリポジトリ、そうじゃないリポジトリとか。 やりがちな失敗が、最初にスタンダードなread/writeができるリポジトリを定義してすべてのリポジトリでそれを継承しようとしてしまうことです。 これだとReadしかできないリポジトリが発生したとき、それだけリポジトリ基底クラスを継承しないようにするかReadWriteRepositoryの既定クラスとしてReadRepositoryを置くなどしないといけなくなります。 最悪の選択はReadしか不要なのにWriteのメソッドも実装してしまうことで、これは余計なコードが増えるだけではなく他の開発者が「このリポジトリってwriteしていいんだ」と勘違いする理由になります。
より本質的にアンチパターンであるとした場合の理由を考えると リスコフの置換原則「派生型はその基本型と置換可能でなければならない」に反しているからだと思います。